У меня есть отрицательная метка времени, и я хотел преобразовать ее в формат, пригодный для чтения.
$timestamp = -1861945262080;
Если я использую date("dmY", $timestamp)
, она просто выведет 12-08-2035.
Следующий фрагмент кода преобразует вашу временную метку UNIX в действительную дату-месяц-год. Тем не менее, passing pretty large negative unix timestamps can produce unexpected results
как показано ниже.
<?php $dt = new DateTime(); $dt->setTimestamp(-1861945262080); //<--- Pass a UNIX TimeStamp echo $dt->format('dm-Y');
OUTPUT :
12-08-2035
Тем не менее, вы по-прежнему можете передавать отрицательные метки времени выше. Рассмотрим эту выдержку из wikipedia
.
Время Unix-времени равно нулю в эпоху Unix и увеличивается с точностью до 86400 в день с эпохи. Таким образом, 2004-09-16T00: 00: 00Z, через 12677 дней после эпохи, представлено временным номером Unix 12677 × 86400 = 1095292800. Это также может быть увеличено и обратно с эпохи, используя отрицательные числа; таким образом, 1957-10-04T00: 00: 00Z, за 4472 дня до эпохи, представлено временным номером Unix -4472 × 86400 = -386380800.
Итак, перейдем -386380800
к вышеуказанному коду.
<?php $dt = new DateTime(); $dt->setTimestamp(-386380800); //<--- Pass a UNIX TimeStamp echo $dt->format('dm-Y');
OUTPUT :
04-10-1957
который является ожидаемым выходом по источникам.