这看起来很奇怪,但我已经检查了所有内容,但仍然发生了一件奇怪的事情。
我无法更改php脚本的时区。
首先:我做的事情是这样的:
<?php
date_default_timezone_set('UTC');
echo '<br>';
echo date('Y-m-d H:i:s');
?>
当我在测试中尝试这个时,它似乎运行良好http://codepad.org/rpYZ0flA.
我的服务器的时区设置为UTC+8:00 Taipei,但当我尝试上面的代码时,它并没有真正工作。它仍然在服务器的时区中显示我的当前日期时间,而不是按照上面的代码。
这是我的服务器的php.ini配置:
date/time support enabled
"Olson" Timezone Database Version 2012.3
Timezone Database internal
Default timezone Europe/Berlin
为什么会发生这种情况?这已经是一个bug了吗?或者服务器设置错误,或者我只是在代码中遗漏了一些内容?
谢谢。
注意:我的环境是使用PHP 5.4.4 在虚拟机中运行的Windows 7N
修复:
我通过手动更改php.ini
试试这个
<?php
echo date('Y-m-d H:i:s T', time()) . "n";
date_default_timezone_set('UTC');
echo date('Y-m-d H:i:s T', time()) . "n";
在这里你可以找到测试结果http://codepad.org/gc5oYnLW
如果您只想要自Unix Epoch(1970年1月1日00:00:00 GMT)以来带时区的时间(以秒为单位)。使用以下代码:
<?php
date_default_timezone_set("UTC");
time()+date("Z");
它应该可以毫无问题地工作。
如果有疑问,请使用以下代码进行检查:
<?php
date_default_timezone_set('America/Virgin');
echo date('Y-m-d H:i:s T') . "n";
date_default_timezone_set('UTC');
echo date('Y-m-d H:i:s T') . "n";
这是一个代码板预览为您提供方便。
退货将是这样的(有更新的日期和时间):
2017-12-11 03:09:58 AST
2017-12-11 07:09:58 UTC
如果失败,请仔细检查服务器配置……从PHP.ini
文件开始。