这是编码,它以正确的格式回显,但是当它打印出来时日期错误。
输出: 1969年12月31日19:33
数据库时间戳 2016-05-20 21:53:17
<?php
date_default_timezone_set('ECT');
$timestamp = 1456778973;
echo date('d M Y H:i',$row['timestamp']);
?>
我试过以不同的方式做日期,结果仍然相同
答案 0 :(得分:2)
在您发布的代码示例中,$row['timestamp']
尚未设置,因此日期由时间戳0(也称为纪元)或正在回显的日期构成。
如果您按如下方式更改它,它应该可以正常工作:
<?php
date_default_timezone_set('ECT');
$timestamp = 1456778973;
echo date('d M Y H:i', $timestamp); ?>
旁注:
时区ECT
不是PHP中的有效时区代码。如果我正确地假设您指的是欧洲中心时间,则必须指定CET
。
答案 1 :(得分:1)
ECT
并非作为有效TimeZone
存在,您的意思是CET
吗?
正确的方法是使用DateTime类,即:
$date = new DateTime();
$date->setTimestamp(1456778973);
$tz = new DateTimeZone("America/Denver");
$date->setTimezone($tz);
echo $date->format('d M Y H:i');
注意:
日期应始终存储在DB中UTC
(时间戳也称为unix时间),然后您可以使用DateTime
类添加或减去时区偏移。
你知道山地标准时间的偏移量吗?
山区时间:America/Denver
山区时间(无夏令时):America/Phoenix