循环几天

时间:2013-06-23 12:59:26

标签: php date datetime loops

我希望返回特定范围之间的所有日子 我的想法是将开始和结束日期转换为unix时间戳并循环遍历它们添加86400(一天中的几秒):

<?php
  $start = strtotime('2013-01-01');
  $end = strtotime('2013-02-01');

  for($i=$start; $i<=$end; $i+86400)
  {
     echo date("l, d.m.y", $i) . "\n";
  }
?>

不幸的是,我只得到同一天:

Tuesday, 01.01.13
Tuesday, 01.01.13
Tuesday, 01.01.13
...

2 个答案:

答案 0 :(得分:7)

最佳做法是使用DatePeriod类。

$start = new DateTime('2013-01-01');
$end = new DateTime('2013-02-01');

foreach (new DatePeriod($start, new DateInterval('P1D'), $end) as $date) {
    echo $date->format("l, d.m.y\n");
}

答案 1 :(得分:5)

这是错误的:

for($i=$start; $i<=$end; $i+86400)

应该是

for($i=$start; $i<=$end; $i+=86400)

请注意原始代码+=的{​​{1}}插入内容。在您的代码中,您没有为变量赋值,只执行没有结果的数学公式