以下脚本在我调用后返回错误的时间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 问题还是服务器问题。