Странное поведение strtotime для дат в далеком будущем - PullRequest
2 голосов
/ 02 ноября 2011

После устранения странной ошибки я столкнулся с этим:

echo strtotime("2050/09/19");

возвращает ложь

Почему?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 02 ноября 2011

Похоже, у вас нет 64-битного PHP.Из strtotime документов:

Примечание:

Допустимый диапазон отметок времени обычно от пт, 13 декабря 1901 г. 20:45:54 UTC до вторника, 19 января 2038 03:14:07 UTC.(Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком.) Кроме того, не все платформы поддерживают отрицательные временные метки, поэтому ваш диапазон дат может быть ограничен не ранее эпохи Unix.Это означает, что, например, даты до 1 января 1970 года не будут работать в Windows, некоторых дистрибутивах Linux и некоторых других операционных системах.PHP 5.1.0 и более новые версии преодолевают это ограничение.

Для 64-разрядных версий PHP допустимый диапазон отметки времени фактически бесконечен, поскольку 64 бита могут представлять приблизительно 293 миллиарда лет в любом направлении.

3 голосов
/ 02 ноября 2011

Это связано с тем, что 2050 год не относится к 32-битной эпохе Unix (которая заканчивается где-то в 2038 году). Подробнее на странице документации для strtotime () .

3 голосов
/ 02 ноября 2011

В 32-битной системе он не может обрабатывать даты, которые так далеко в будущем: strtotime

2 голосов
/ 02 ноября 2011

Допустимый диапазон отметки времени обычно составляет с пятницы, 13 декабря 1901 г., 20:45:54 UTC до вторника, 19 января 2038 г. 03:14:07 UTC . (Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком.) Кроме того, не все платформы поддерживают отрицательные временные метки, поэтому ваш диапазон дат может быть ограничен не ранее эпохи Unix. Это означает, что, например, даты, предшествующие 1 января 1970 года, не будут работать в Windows, некоторых дистрибутивах Linux и некоторых других операционных системах. PHP 5.1.0 и более новые версии преодолевают это ограничение.

Для 64-битных версий PHP действительный диапазон метки времени фактически бесконечен, поскольку 64-битные могут представлять приблизительно 293 миллиарда лет в любом направлении.

Здесь.

...