无法理解PHP中DateTime类的行为

Soh*_*edM 5 php datetime

我在Kubuntu 14.04中使用LAMP,PHP 5.6.23.

在以下情况下使用DateTime时:

1.

print_r((new DateTime('2016-02-31'))->format('M/d/Y')); 
// Mar/02/2016 (no errors, why?)
Run Code Online (Sandbox Code Playgroud)

2.

print_r((new DateTime('2016-02-32'))->format('M/d/Y')); 
// Error - DateTime::__construct(): Failed to parse time string-
// (2016-02-32) at position 9 (2): Unexpected character
Run Code Online (Sandbox Code Playgroud)

为什么第一个案例没有给我错误,因为没有第二个月的第31个月?

要求提供支持答复的参考文​​献

cb0*_*cb0 7

来自php文档:

dd和DD格式可以上下溢.第0天表示上个月的最后一天,而溢出计入下个月.这使得"2008-08-00"相当于"2008-07-31"和"2008-06-31"相当于"2008-07-01"(6月只有30天).

请注意,从PHP 5.1.0开始,日期范围限制为0-31,如上面的正则表达式所示.因此,例如,"2008-06-32"不是有效的日期字符串.

这很清楚.

在用户注释中Mirek还建议在需要时使用: mktime

日期计算的无限上/下溢(例如2015-01-40至2015-02-09)