我正在研究一个项目,我遇到了将时间段格式化为人类可读时间的问题.
我有以下的纪元时间1428512160,当我把它通过epochconverter.com时,我得到了08/04/2015 17:56:00 GMT+1:00 DST预期的人类时间.
然后,我使用以下代码执行从纪元时间到人类日期时间的转换.
$dt = new DateTime($supportDetails["Reported"]);
$reportedTimeString = $dt->format('d-m-Y H:i:s');
Run Code Online (Sandbox Code Playgroud)
$ supportDetails [报告]是纪元时间(我打印它所以我知道它是正确的).
然而,我得到的结果是08-04-2160 14:28:51.
您需要@在DateTime类中添加时间戳,如下所示:
$dt = new DateTime("@" . $supportDetails["Reported"]);
//^ See here
Run Code Online (Sandbox Code Playgroud)
您也可以在手册中看到这一点.从那里引用:
Unix时间戳 "@" " - "?[0-9] +"@ 1215282385"
另请注意,当前时区被忽略,您也可以在手册中看到:
注: 在$时区参数和当前时区被忽略时,$时间参数要么是一个UNIX时间戳(如@ 946684800(:00:00 + 02:00如2010-01-28T15))或指定一个时区.