我有这个代码来迭代一个月
$begin2 = new DateTime( '2017-08-01' );
$end2 = new DateTime( '2017-08-31' );
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin2, $interval, $end2);
foreach ( $period as $i ){
echo $i->format("Y-m-d")."<br/>";
}
我也试过这个:
$begin = new DateTime( '2017-08-01' );
$end = new DateTime( '2017-08-31' );
for($i = $begin; $begin <= $end; $i->modify('+1 day')){
echo $i->format("Y-m-d")."<br/>";
}
我得到了两个相同的结果,它跳过8月31日,它确实与其他几个月一起工作,我很困惑,不知道会发生什么。
答案 0 :(得分:1)
如果你有var_dump $ period,你就会发现问题 您的结束时间是8月31日00:00。
如果您在当天晚些时候设定时间,则会输出日期。
$begin2 = new DateTime( '2017-08-01' );
$end2 = new DateTime( '2017-08-31 12:00' ); //I set the end at noon here. Any time should work except empty or 00:00
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin2, $interval, $end2);
foreach ( $period as $i ){
echo $i->format("Y-m-d")."<br/>";
}