Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 第0年已损坏_Datetime_Php 5.2 - Fatal编程技术网

Datetime 第0年已损坏

Datetime 第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年

日期从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年12月1日的一个月->1。 减去一天->当年11月30日-1

或者,他们可以选择先安排一天,然后就这样: 1月1日-1日->0001年12月31日,1月1日-1日->0001年11月30日


显然,格式化程序执行绑定检查只是为了生成有效日期。(对于“有效”的某些定义)

在许多日历系统中都没有“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