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 关注
- 91 浏览
添加回答
举报