1
date_default_timezone_set不起作用。php - 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年5月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到解决了这个问题。
请参见上面的代码,我也尝试 “回声日期( 'YMD H:我:■T')”,这不包括时间(),但它返回相同的结果。我也尝试:$ now = new DateTime(); $ now-> setTimezone(new DateTimeZone('UTC')); echo $ now-> format('Y-m-d H:i:s T')。 “
”;它返回:2017-05-26 13:14:27 CST,为什么时区是CST(中国)? – gdtv
@gdtv但是在你回复那个日期之前,你将时区设置为UTC。所以echo date(time())将与你的echo相同,因为它们都是UTC – Andreas