php отображает неправильную дату в php для 31-12-9999

Когда я пытаюсь выполнить следующий оператор в PHP

echo gmdate("M d Y H:i:s", gmmktime(0, 0, 0,12, 31, 9999));

PHP возвращает следующую дату

Результат 01 января 1970 г., 00:00:00

Я также пытался использовать следующую функцию strtotime, но результат тот же

echo gmdate("M d Y H:i:s", strtotime('2999-12-31'));

Результат: 01 января 1970 г., 00:00:00

Есть идеи, что здесь может быть не так?


person user3477198    schedule 30.03.2014    source источник
comment
возможный дубликат PHP strtotime возвращает false для времени UTC   -  person Glavić    schedule 30.03.2014


Ответы (2)


Годы 9999 и 2999 выходят за пределы допустимого диапазона временных меток UNIX (формат, возвращаемый strtotime() и gmmktime()). Максимальное допустимое значение — INT_MAX, 0x7fffffff (примерно 18 января 2038 г.).

person Community    schedule 30.03.2014

Максимальная дата, которую может использовать функция gmdate, — 19 января 2038 года; попытка использовать дату за ее пределами просто не вычисляется (буквально), поэтому PHP возвращает базовую дату Unix, которую вы видите в своем результате.

См. http://us2.php.net/manual/en/function.gmdate.php.

person Morgan Estes    schedule 30.03.2014