Год 0 испорчен - PullRequest
       23

Год 0 испорчен

2 голосов
/ 28 марта 2012
$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.

info: PHP версии 5.2.13-0.dotdeb.1 Linux 2.6.26-2-openvz-amd64 # 1 SMP четверг 25 ноября 05:14:47 UTC 2010 x86_64

1 Ответ

1 голос
/ 28 марта 2012

Это как бы правильно по определению:

  • нулевой день в отличие от первого дает (гипотетический) минус один день
  • нулевой месяц в отличие от первого дает (гипотетический) минус один месяц

Возьмите (гипотетическое) 1 января в году 0, вычтите месяц -> 1 декабря в году -1. Вычтите день -> 30 ноября в году -1

В качестве альтернативы, они могли бы сначала навести порядок, а потом было бы так: 1 января минус 1 день -> 31 декабря -0001, минус 1 месяц -> 30 ноября -0001

Форматировщик явно выполняет связанную проверку, чтобы получить только действительные даты. (Для некоторого определения `` valid '')

...