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 这显然是错误的,为什么会发生这种情况,如何解决?至少应该返回false。

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

4

1 回答 1

1

根据定义,它是正确的:

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

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

或者,他们可以选择先解决这一天,然后它会变成这样:1 月 1 日 - 1 日 -> 12 月 31 日 -0001,- 1 月 -> 11 月 30 日 -0001

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

于 2012-03-28T11:22:05.037 回答