php date与数据库不匹配?

时间:2016-05-21 02:22:13

标签: php

这是编码,它以正确的格式回显,但是当它打印出来时日期错误。

  

输出: 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']);
?>

我试过以不同的方式做日期,结果仍然相同

2 个答案:

答案 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');

PHPFiddle Demo

注意:

日期应始终存储在DB中UTC(时间戳也称为unix时间),然后您可以使用DateTime类添加或减去时区偏移。

  

你知道山地标准时间的偏移量吗?

山区时间:America/Denver
山区时间(无夏令时):America/Phoenix

List of Supported Timezones