PHP循环获取今天的日期和接下来的9天

时间:2017-05-29 11:16:28

标签: php date

我有以下php代码:

$date = new DateTime();
$date->setTimeZone(new DateTimeZone('America/New_York'));
$index = 0;


while( $index <10){
    $date->modify('+'. $index .' day');
    print $date->format('Y-m-d') . ' - index: ' . $index . '<br/>';
    $index++; 
}

这个脚本应该做什么:它应该显示今天的日期以及接下来几天的接下来的9个日期:(我还每次打印$ index值以确保索引始终正确)。

实际显示的内容:

2017-05-29 - index: 0
2017-05-30 - index: 1
2017-06-01 - index: 2
2017-06-04 - index: 3
2017-06-08 - index: 4
2017-06-13 - index: 5
2017-06-19 - index: 6
2017-06-26 - index: 7
2017-07-04 - index: 8
2017-07-13 - index: 9

注意:查看日期 2017-06-01 如何跳至 2017-06-04 ,然后转到 2017- 06-08 等等。

我不知道为什么会这样,有人能告诉我吗?这甚至是正确的方法吗?

4 个答案:

答案 0 :(得分:4)

由于您希望在每次迭代时添加1天,因此您无需在总和上使用索引,只需使用$date->modify("+1 day");

另外,在修改日期之前,请将行打印到您的位置。

您的代码中发生的情况是您在第一次迭代时开始添加0,然后打印实际的日期。下一次迭代,你加1,所以明天打印。下一次迭代,您添加2,并跳过1天。接下来,添加3,并跳过2天......这一遍又一遍。

答案 1 :(得分:1)

不要改变$index的值,让它等于= 1,或者甚至尝试做#34; + 1天&#34;在modify()函数

答案 2 :(得分:1)

for($i=1;$i<=10;$i++)
echo date("y-m-d",strtotime($i." day"))."<br />";

答案 3 :(得分:0)

使用此循环

$begin = new DateTime("2017-05-29");
$end = new DateTime("2017-06-8");
$end = $end->modify('+1 day');
$interval = DateInterval::createFromDateString('1 day');

$index = 0;
foreach ($period as $dt) {
    if ($index == 9) {
        break;
    }

    echo $dt->format("Y-m-d");
    $index = $index + 1;
}