【发布时间】:2012-04-13 11:18:54
【问题描述】:
以下脚本在我调用date_default_timezone_set("UTC")后返回错误的时间
<?PHP
$timestamp = time();
echo "<p>Timestamp: $timestamp</p>";
// This returns the correct time
echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";
echo "<p>Now I call 'date_default_timezone_set(\"UTC\")' and echo out the same timestamp.</p>";
echo "Set timezone = " . date_default_timezone_set("UTC");
// This returns a time 5 hours in the past
echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";
?>
服务器上的时区是 BST。所以应该发生的是,对“日期”的第二次调用应该返回第一次调用后 1 小时的时间。它实际上比第一个晚了 5 个小时。
我应该注意到,服务器最初是使用 EDT 时区 (UTC -4) 设置的。更改为 BST (UTC +1) 并重新启动服务器。
我不知道这是 PHP 问题还是服务器问题。
【问题讨论】:
-
什么是 date_default_timezone_get() 显示之前您更改时区?
-
时区:欧洲/伦敦
-
你服务器的
date终端命令返回什么? -
-bash-3.2$ 日期 -> 2012 年 4 月 13 日星期五 12:08:21 BST
-
无论哪种方式,那个时间都是完全错误的。运行
ntpdate以更正您的计算机时钟(请参阅我的更新答案)。