1 回答

TA貢獻1796條經驗 獲得超4個贊
這是由于DateTime構造函數處理first day of相對時間的方式不一致:
$month_start = new DateTime("first day of this month");
echo $month_start->format('Y-m-d H:i:s') . "\n";
$month_start = new DateTime("first day of March");
echo $month_start->format('Y-m-d H:i:s') . "\n";
截至2020 年3 月 22 日的輸出(演示):
2020-03-01 03:49:52
2020-03-01 00:00:00
請注意,該first day of this month變量具有非零時間部分。但是,當您計算該$month_end值時,您會得到一個零時間:
$month_end = new DateTime("last day of April");
echo $month_end->format('Y-m-d H:i:s') . "\n";
輸出(演示):
2020-04-30 00:00:00
所以代碼中的循環失敗了,因為$month_start到達2020-04-30非零時間,where$month_end有一個零時間,因此<=比較失敗。
您可以通過向第一個值添加時間部分以強制其為 0 來解決此問題:
$month_start = new DateTime("first day of this month 00:00");
然后您的循環將按預期工作:Demo on 3v4l.org。
- 1 回答
- 0 關注
- 114 瀏覽
添加回答
舉報