Я наткнулся на эту проблему:
<?php
echo date('r', 4567743118);
Желаемый & правильный результат (на локальном хосте):
Воскресенье, 30 сентября 2114 10:31:58 +0100
Неверный результат (на пульте):
Четверг, 24 августа 1978 г. 04:03:42 +0100
Плохой результат получается при запуске скрипта на 32-битной платформе. Я думаю, что это знаменитая проблема Y2038, но как мне ее исправить?
Если я повторяю метку времени (при сохранении в переменной), она показывает нормально, но date()
уничтожает его (приведение к int32, я полагаю).
<?php
$a = 4567743118;
echo $a;
[если уместно, это PHP 5.4.4 из репозитория Debian]4567743118
Попробуй это:
<?php
$dt = new DateTime('@4567743118');
$date = $dt->format('Y-m-d');
echo $date;
Отметка времени в 32-битной системе работает только до 2.147.483.647. Так что, если у вас есть большее значение, вы получите целую максимальную длину. Максимум здесь — 2038 год.
Если вам нужны большие даты, вы должны использовать datetime.