2011-07-21 48 views
0

当服务器上的时间超出12小时时,可能会发生什么?我在一个朋友的网站上工作,并注意到,虽然服务器在我们的时区,但在向DB写入记录时,我们已经晚了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报告上午04时46分。这真的是下午4:46。它将GMT报告为时区,但PHPinfo报告太平洋/奥克兰为时区(GMT + 12)。

我问网络主机发生了什么事。他们不确定,因为该系统的时间是正确的。 而且没有其他的php.ini文件被引入。

想法?

+0

什么是“时区:GMT”之后的“...”?你要留下什么东西吗? – tehvan

+0

问:什么是数据库,当您为数据库调用“getdate()”(或等价物)时会得到什么。关于PHP可能仍然是罪魁祸首,请看这里的问题reconconciling date.default_timezone,$ TZ和date.timezone,:http://www.php.net/manual/en/function.date-default-timezone- get.php – paulsm4

+0

DB是MySQL,时间函数刚刚返回“system”。 引发这次狩猎的软件是Joomla ......我怀疑这是误操作时间。 – Onyx

回答

1

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

+0

非常感谢,这是正确的...它有助于使用正确的功能! strftime正确报告NZST。 – Onyx

0

gmstrftime就其性质在格林尼治标准时间报告时间。这就是gm的用途。 :)

+0

Woops我应该提供一个链接。这里你去:http://php.net/manual/en/function.gmstrftime.php。 –

+0

谢谢......它有助于使用正确的功能;) – Onyx