Datetime 第0年已损坏
日期从0000-00-00:00:00改为-0001-11-30 00:00:00 这显然是错误的,为什么会发生这种情况,如何解决? 至少应该返回false 信息: PHP版本5.2.13-0.dotdeb.1Datetime 第0年已损坏,datetime,php-5.2,Datetime,Php 5.2,日期从0000-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周四11月25日05:14:47 UTC 2010 x86_64根据定义,它有点正确: 与第一天相反的第零天产生一个(假设的)负一天 与第一个月相反的第零个月产生一个(假设的)负一个月 取0年1月1日(假设)减去-1年
Linux 2.6.26-2-openvz-amd64#1 SMP周四11月25日05:14:47 UTC 2010 x86_64根据定义,它有点正确:
- 与第一天相反的第零天产生一个(假设的)负一天
- 与第一个月相反的第零个月产生一个(假设的)负一个月
显然,格式化程序执行绑定检查只是为了生成有效日期。(对于“有效”的某些定义)在许多日历系统中都没有“0年”,特别是朱利安/格里高利历,我想,
格式使用了它的一些变体。很奇怪为什么它会选择那个日期,然而。。。30天“太早了”?是的,这是有道理的(尽管我更希望php只返回false),一些奇怪的程序员用这些日期填充了我的数据库,有一刻我忘记了没有0天或0个月这样的事情。我想我太习惯从0开始数数了。至少现在我学到了php处理日期的新方法PHehe,好吧,有趣的是sql'92允许第0个月和第0天,我想这就是很多困惑的来源。
$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