У меня есть три сервера, которые выполняют следующие действия на всех трех серверах:
echo strtotime('2099-12-31'); echo strtotime(date('Ym-d'));
получает меня:
Сервер № 1: (php 5.3.8, 64 бит)
4102376400 1328418000
Сервер 2: (php 5.3.2, 32 бит)
**[nothing]** 1328418000
Сервер № 3: (php 5.3.2 – 64bit Я думал, что это может быть проблема с версией PHP)
4102376400 1328418000
Что может привести к сбою strtotime на одном из серверов, но не в других? Все три имеют одинаковые настройки часового пояса по умолчанию и date.timezone в php.ini (не уверен, что это повлияет или нет). Я также включил ошибки, и я ничего не вижу.
Вероятно, это 32-разрядная проблема. Он отлично работает на моем 64-битном сервере, но мой 32-разрядный Ubuntu возвращает false на strtotime('2099-12-31')
Для получения дополнительной информации см. Это примечание в руководстве (выделение мной):
Допустимый диапазон временной отметки – от Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком.) Кроме того, не все платформы поддерживают отрицательные метки времени, поэтому ваш диапазон дат может быть ограничен не раньше, чем эпоха Unix. Это означает, что, например, даты до 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах. Однако PHP 5.1.0 и более новые версии преодолевают это ограничение.
Для 64-битных версий PHP допустимый диапазон временной метки фактически бесконечен, так как 64 бита могут составлять примерно 293 миллиарда лет в любом направлении.
Согласно документам :
Допустимый диапазон временной отметки – от Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком.) Кроме того, не все платформы поддерживают отрицательные метки времени, поэтому ваш диапазон дат может быть ограничен не раньше, чем эпоха Unix. Это означает, что, например, даты до 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах. Однако PHP 5.1.0 и более новые версии преодолевают это ограничение.
Для 64-битных версий PHP допустимый диапазон временной метки фактически бесконечен, так как 64 бита могут составлять примерно 293 миллиарда лет в любом направлении.
Попробуйте, например, 2019-12-31
, должно работать как ожидалось.