我一直在努力工作,DateTime class
并且最近遇到了我认为添加月份时的错误.经过一些研究后,似乎它不是一个bug,而是按预期工作.根据此处的文档:
示例#2在添加或减去月份时要小心
<?php
$date = new DateTime('2000-12-31');
$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";
$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";
?>
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)The above example will output: 2001-01-31 2001-03-03
任何人都可以证明为什么这不被视为错误?
此外,是否有人有任何优雅的解决方案来纠正问题并使其成为+1个月将按预期工作而不是按预期工作?
我正在寻找获得上个月第一天和最后一天的最佳方式.我使用它们进行SQL查询以获取上个月的统计数据.
我认为这是最好的方式,更优化但不是更加全面,任何人都有另一种方式来做同样的事情?
$month_ini = date("Y-m-d", mktime(0, 0, 0, date("m", strtotime("-1 month")), 1, date("Y", strtotime("-1 month"))));
$month_end = date("Y-m-d", mktime(0, 0, 0, date("m", strtotime("-1 month")), date("t", strtotime("-1 month")), date("Y", strtotime("-1 month"))));
Run Code Online (Sandbox Code Playgroud)
谢谢!!