PHP: преобразовать отрицательную временную метку на дату

У меня есть отрицательная метка времени, и я хотел преобразовать ее в формат, пригодный для чтения.

$timestamp = -1861945262080; 

Если я использую date("dmY", $timestamp) , она просто выведет 12-08-2035.

Solutions Collecting From Web of "PHP: преобразовать отрицательную временную метку на дату"

Следующий фрагмент кода преобразует вашу временную метку 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 

который является ожидаемым выходом по источникам.