0年级已损坏

时间:2012-03-28 11:09:15

标签: datetime php-5.2

$datetime = new DateTime('0000-00-00 00:00:00');
$date_string = $datetime->format('Y-m-d H:i:s');//-0001-11-30 00:00:00 

日期从0000-00-00 00:00:00变为-0001-11-30 00:00:00 这显然是错的,为什么会发生这种情况,如何解决? 至少应该返回假。

信息: PHP版本5.2.13-0.dotdeb.1 Linux 2.6.26-2-openvz-amd64#1 SMP Thu 11月25日05:14:47 UTC 2010 x86_64

1 个答案:

答案 0 :(得分:1)

根据定义,这是正确的:

  • 第一天与第一天相比产生一个(假设的)减去一天
  • 零第一个月而不是第一个月产生一个(假设的)减去一个月

在0年的1月1日(减去假设),减去一个月 - >今年12月1日-1。 减去一天 - >今年11月30日-1

或者,他们可以选择先修好一天,然后就像: 1月1日减去1d - > 12月31日-0001,减去1mo - > 11月30日-0001

格式化程序显然会将绑定检查仅生成有效日期。 (对于“有效”的某些定义)