Я работаю над проектом, и у меня возникает проблема, форматирующая эпоху, к человекообразному времени.
У меня есть следующая эпоха 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
.
Спасибо за вашу помощь.
Вам нужно добавить @
для метки времени в классе 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');