DateTime-> format (epoch), возвращающий неверную дату

Я работаю над проектом, и у меня возникает проблема, форматирующая эпоху, к человекообразному времени.

У меня есть следующая эпоха 1428512160 и когда я ставлю это через epochconverter.com, я получаю человеческое время от 08/04/2015 17:56:00 GMT+1:00 DST как ожидалось.

Затем я использую следующий код, чтобы выполнить переход от эпохи к человеческому дате.

 $dt = new DateTime($supportDetails["Reported"]); $reportedTimeString = $dt->format('dmY H:i:s'); 

$ supportDetails [Сообщено] – это эпоха (я напечатал ее, чтобы я знал ее правильно).

В результате я вернусь, однако, 08-04-2160 14:28:51 .

Спасибо за вашу помощь.

Related of "DateTime-> format (epoch), возвращающий неверную дату"

Вам нужно добавить @ для метки времени в классе DateTime, например:

 $dt = new DateTime("@" . $supportDetails["Reported"]); //^ See here 

Вы также можете увидеть это в руководстве . И цитата оттуда:

Unix Timestamp "@" "-"? [0-9] + "@ 1215282385"

Также обратите внимание, что текущий часовой пояс игнорируется, что вы также можете увидеть в руководстве :

Примечание. Параметр $ timezone и текущий часовой пояс игнорируются, когда параметр $ time является временной отметкой UNIX (например, @ 946684800 ) или указывает часовой пояс (например, 2010-01-28T15: 00: 00 + 02: 00).

Дата и время печати верны. Он основан на том, что GMT вы установили в своем PHP. Если вы печатаете с GMT, вы получите требуемый результат.

Попробуйте следующий код:

$reportedTimeString = date("dmY H:i:s", $supportDetails["Reported"]);

Или следующее:

 $date = new DateTime(); $date->setTimestamp($supportDetails["Reported"]); $reportedTimeString = $date->format("dmY H:i:s"); - $date = new DateTime(); $date->setTimestamp($supportDetails["Reported"]); $reportedTimeString = $date->format("dmY H:i:s"); 

Проблема, которую я вижу, связана с вашим форматированием.

Если вы посмотрите на функцию даты PHP, вы увидите, что вам просто нужно записать каждую часть нужной даты и времени в строку.

Следующее форматирование дает тот же результат, который вы искали:

$dt = new DateTime($supportDetails["Reported"]); $reportedTimeString = $dt->format('d/m/YH:i:s \G\M\TP T');