时区问题


Time zone issue

当服务器超时12小时时可能会发生什么?我在一个朋友的网站上工作,并注意到,虽然服务器是在我们的时区,它是12小时后,我们写记录到数据库。所以我做了如下检查:

<?php echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));
    phpinfo();
?>
结果:

It is Thu on Jul 21, 2011, 04:46:46 time zone: GMT
...
date
date/time support enabled
"Olson" Timezone Database Version 2010.15
Timezone Database internal
Default timezone Pacific/Auckland

Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333  35.2333
date.sunrise_zenit 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone Pacific/Auckland Pacific/Auckland

问你可以看到,PHP报告4:46 am。现在是下午4点46分。它报告GMT作为时区,但PHPinfo报告太平洋/奥克兰作为时区(GMT+12)。

我问网站管理员发生了什么事。他们不确定,因为系统的时间是正确的。并且没有引入其他php.ini文件。

想法?

gmstrftime报告GMT时间,这对我来说是正确的。您需要strftime来获取本地(AKL)时间。php.ini可能将其时区设置为AKL,这也是正确的。正确的问题是"strftime(或任何其他PHP当前时间函数)报告什么?"

gmstrftime按其性质以GMT报告时间。这就是gm的作用。:)