以下脚本在调用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 。那么应该发生的是第二次调用'date'应该返回第一次调用后1小时的时间。它实际上比第一个时间晚了5个小时。
我应该注意,服务器最初是使用EDT时区(UTC -4)设置的。这已更改为BST(UTC +1)并重新启动服务器。
我无法弄清楚这是PHP问题还是服务器问题。
答案 0 :(得分:7)
这几乎肯定不是php中的错误,而是在您当地的时区配置中。
最有可能的是,您实际上并未更改系统范围的时区,而只是更改了交互式显示的时区。检查/etc/localtime
是否符合您的预期。在debian系统上,您可以运行tzselect(具有超级用户权限)来设置系统范围的时区。
设置时区后,您可能需要重置时钟。在许多系统上,这应该会随着时间的推移自动发生,但您可以通过运行ntpdate -u pool.ntp.org
手动执行此操作。
答案 1 :(得分:1)
您应该查看php手册,了解您所在国家/地区的正确时区。然后在date_default_timezone_set()函数中设置它。为了澄清,我在这里解释了http://t2techblog.com/php-a-simple-function-for-getting-the-current-nigeria-local-time/
答案 2 :(得分:0)
只需使用以下代码设置您的区域
即可 date_default_timezone_set("Asia/Bangkok");//set you countary name from below timezone list
echo $date = date("Y-m-d H:i:s", time());//now it will show "Asia/Bangkok" or your date time