我一直在努力工作,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个月将按预期工作而不是按预期工作?
今天是12月31日但是strtotime("-1 months")12月返回:
echo date("Y-m", strtotime("-1 months"));
Run Code Online (Sandbox Code Playgroud)
同样的 strtotime("last month")
我怎样才能正确返回上个月(11月)?
我正在尝试从当前接收的年度月份中减去一个月(2019-03)
echo $payroll['month'];
echo $newdate = date("Y-m", strtotime("-1 months",$payroll['month']));
Run Code Online (Sandbox Code Playgroud)
但它通过错误为
2019-03
遇到PHP错误严重程度:注意
消息:遇到格式不正确的数值
我想要2019-03减去一个月,所以我会得到2019-02