我一直在努力工作,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个月将按预期工作而不是按预期工作?
我没能找到解决这个问题的正确方法.正如您在PHP文档中的示例#3中看到的那样,他们声明在使用DateTime :: add中的DateInterval 添加月份时必须要注意.
对于为什么方法的行为是这样的,并且我可以做些什么来避免这种情况并没有任何解释,我发现这是一个错误.
有人对此有所了解吗?
我已经看到以前在现有日期增加两个月的问题,但现有的答案对我没有多大帮助,因为我得到的结果与我想要的不同.我已经设置了如下日期:
$date = "2014-12-31";
$date = date('Y-m-d', strtotime("$date +2 month"));
Run Code Online (Sandbox Code Playgroud)
在我添加2个月后,我将其打印出来:
echo $date;
Run Code Online (Sandbox Code Playgroud)
我的结果:
2015年3月3日
但这对我来说是不对的,因为这是我想要的整整一个月:
2015年2月28日
我怎样才能做到这一点?