【发布时间】:2017-05-26 04:50:24
【问题描述】:
date_default_timezone_set 不起作用。
我的代码:
ini_set('display_errors', true);
error_reporting(E_ALL);
date_default_timezone_set("UTC");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
date_default_timezone_set("Asia/Shanghai");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
ini_set("date.timezone","UTC");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
ini_set("date.timezone","Asia/Shanghai");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
他们都返回相同的日期“2017-05-26 12:47:08 CST”,为什么?
更新:
我已经修复了这个问题,原因是我在CentOS7上使用了错误的方式更改时区:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这种方式在 CentOS6 上是正确的,但在 CentOS7 中 /etc/localtime 链接到 /usr/share/zoneinfo/Etc/UTC,所以我损坏了 UTC 时区。
在 CentOS7 上更改时区的正确方法是:
timedatectl set-timezone "Asia/Shanghai"
或
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
所以我将 /usr/share/zoneinfo/Etc/UTC 从其他系统复制到我的系统以解决此问题。
【问题讨论】: