2011-09-20 62 views
1

可能重复:
Daylight saving time and Timezone best practices夏令问题

基本上我有以下问题:

我有一个表与所有的GMT偏移量,并根据计算,我用户的小时数相对于服务器的小时数,但有些小时数是关闭的。

所以我的功能看起来像这样,它需要GMT +/- 3600 * usersTZ(GMT偏移)。 伦敦看起来不错,澳大利亚看起来不错,但嘿萨摩亚,而不是例如:5它是`6.

我想这可能是夏时制,任何ideeas情况?

+0

[PHP的DateTime和strtotime是DST知道](http://stackoverflow.com/questions/2505681/timezone-conversion-in-php/2505687#2505687)。改用它们。 – Gordon

+0

谢谢Gordon,但在回答问题之前,请提问问题,例如论坛机器人:p。我已经检查了上述主题,时间不工作,萨摩亚时间没有正确显示'太平洋/萨摩亚'时区的时间,现在应该是星期一晚上9点01分(WST),我认为这是相当不友好的,因为萨摩亚是格林威治标准时间-11,这使得晚上10点。此外,我需要根据每个客户的TZ – Gabriel

+0

做到这一点,然后我想知道为什么您接受了从一开始就表明我的建议的答案? – Gordon

回答

2

PHP可以本地处理时区。你只需要设置像美国/纽约的olson format时区。

然后,您可以使用date_default_timezone_set或任何其他PHP日期时间的东西,理解时区。

仔细阅读PHP docs会很有帮助。特别是herehere

+0

是的,但不会改变整个脚本中所有日期和时间函数的所有日期和时间行为,其中我只能修改一个函数,此外,这不是我的服务器和更改功能以满足我的需要开发人员不是一种选择。 – Gabriel

+0

这只是一个简单的方法来做到这一点的例子。您可以使用'DateTime'类代替'DateTimeZone'对象作为参数。 正如我之前所说,我强烈建议您阅读文档。 – blockhead

+0

尝试过,但它说它不承认类,我害怕这意味着没有考虑到PHP的编译。不要奢望重新编译PHP。 – Gabriel