我一直在努力工作,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 DateTime ::修改添加和减去月份
我有一个开始日期(即2011-01-30),并希望增加1个月.
问题在于定义一个月是什么.所以,如果我使用以下代码:
$d1 = DateTime::createFromFormat('Y-m-d H:i:s', '2011-01-30 15:57:57');
$d1->add(new DateInterval('P1M'));
echo $d1->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:2011-03-02 15:57:57
问题是,我需要它使用以下规则:
在PHP中有一个常见的功能可以做到这一点,还是我必须自己编写代码?也许我只是缺少一个参数或什么!?