Новый способ определения метки времени в PHP 5.3?


Есть ли в PHP 5.3 новый подход к определению метки времени?

Это strtotime('0000-00-00');

Вернет 0 дат (01/01/1970) в PHP до 5.3 и -62169984000 в PHP 5.3. И дату, подобную 30/11/-0001 !!

Но я не смог найти никаких объяснений по этому поводу в документации. Есть идеи, что это изменилось или я что-то упускаю?

Author: Yasen Zhelev, 2011-09-01

1 answers

Объяснение здесь: https://bugs.php.net/bug.php?id=46597

Цитирую:

Конечно, но strtotime() долгое время обрабатывал недопустимые значения месяца и дня так же, как и mktime(), эффективно "округляя" их в допустимые значения: 0-й день месяца становится последним днем предыдущего месяца, 0-й месяц - последний месяц предыдущего года и так далее. Учитывая такую интерпретацию, 0000-00-00 довольно очевидно становится последним днем ноября в году -1 (более известный как 2 до н. э.).

Нет никаких шансов, что поведение будет изменено сейчас: checkdate() в любом случае является гораздо лучшим способом выявления недействительных дат, и это было бы потенциально неприятным нарушением обратной совместимости для людей, полагающихся на это поведение в strtotime().

 5
Author: Neal, 2011-09-01 15:59:00