-1
月31日我有這樣的代碼,通過一個月的迭代通過日期迭代犯規顯示月份
$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日,它與其他幾個月一起工作,我很困惑,不知道會發生什麼。
你的第二個例子中不包括31日。你的第一個例子不會,因爲DatePeriod在下一個DateTime大於*或等於* DateTime結束時停止:爲了解決這個問題,你可以使結束值晚於期望值例如對你來說,這段時間想要'2017-08-31 00:00:00'(午夜),所以請使用'2017-08-31 00:00:01'之類的日期/時間。 – salathe