为什么它不是一个错误:
当前行为是正确的。以下内部发生:
> 1个月将月份数(原来为1)增加1。这使日期2010-02-31。
>第二个月(2月)在2010年只有28天,所以PHP自动纠正这只是继续计数从2月1日的天数。你然后在3月3日结束。
如何获得你想要的:
要得到你想要的是:手动检查下个月。然后添加下个月的天数。
我希望你能自己编码这个。我只是给予什么做。
PHP 5.3方式:
为了获得正确的行为,可以使用PHP 5.3的新功能之一来介绍相对时间节的第一天。本节可以与下个月,第五个月或8个月结合使用,以转到指定月份的第一天。而不是1个月从你在做什么,你可以使用这段代码来获得下个月的第一天,像这样:
$d = new DateTime( '2010-01-31' );
$d->modify( 'first day of next month' );
echo $d->format( 'F' ), "\n";
?>
此脚本将正确输出2月。当PHP处理下个月节的第一天时发生以下事情:
>下个月将月份数(原来为1)增加1。这使日期2010-02-31。>第一天将日数设置为1,导致日期为2010-02-01。