【问题标题】:How do I increment the day of the week in a foreach loop?如何在 foreach 循环中增加星期几?
【发布时间】:2017-07-20 02:39:44
【问题描述】:

我正在尝试做这样的事情,但我觉得我很遥远。我的 foreach 循环将返回 6 个结果。我希望他们从明天开始显示一周中的递增天数。因此,如果今天是星期五,则结果将是星期六、星期日、星期一、星期二、星期三、星期四。

<?php
    date_default_timezone_set("America/New_York");
    $today = date("l");
?>

<?php 
foreach() {
  echo date("F j, Y", strtotime($today++)) . "<br>";
}
?>

【问题讨论】:

    标签: php datetime


    【解决方案1】:

    虽然John Conde's answer 很好地展示了 PHP 的日期时间和日期间隔以及周期功能,但这个简单的任务可以通过以下方式更简洁地完成:

    $date = new DateTime();
    for( $days = 6; $days--; ) {
      echo $date->modify( '+1 days' )->format( 'l' ) . '<br>';
    }
    

    View online demo

    我在这里使用了l(小写L)作为格式,因为它会像问题中要求的那样打印完整的工作日名称,但DateTime::format() 可以识别any format supported by date()


    您自己的示例不起作用的原因是您无法按照您的预期增加date() 返回的结果; date() 返回一个 string,而不是某个神奇地理解增量运算符 (++) 意味着:加一天的对象。 PHP 一开始就不支持那种operator overloading

    如果您认为date() 返回了一个可以递增的integer(就像time() 一样),它仍然不会增加一天,而是增加一秒。

    【讨论】:

      【解决方案2】:

      试试这个:

      <?php
      date_default_timezone_set("America/New_York");
      $today = date("Y-m-d");
      
      for($i = 1; $i <= 7; $i++) {
        echo date('l', strtotime('+'.$i.' days', strtotime($today))) . "<br>";
      }
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 2020-05-26
        • 2015-08-08
        • 2013-06-17
        • 2014-12-14
        相关资源
        最近更新 更多