夏令时问题[重复]

Posted

技术标签:

【中文标题】夏令时问题[重复]【英文标题】:Daylight saving issues [duplicate] 【发布时间】:2011-11-20 20:36:09 【问题描述】:

可能重复:Daylight saving time and Timezone best practices

基本上我有以下问题:

我有一个包含所有 GMT 偏移量的表格,并根据该表格计算出用户小时数相对于服务器小时数,但有些时间相差一个小时。

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

我想这可能是夏令时的情况,有什么想法吗?

【问题讨论】:

php's DateTime and strtotime are DST aware。请改用它们。 感谢 Gordon,但请在回答之前像论坛机器人一样提问:p。我已经检查了上述主题,strtotime 不起作用,在 strtotime 中,'Pacific/Samoa' 时区的萨摩亚时间没有正确显示,现在应该是星期一晚上 9:01(WST),我认为这是相当尴尬的,因为萨摩亚是格林威治标准时间 -11,这使它成为晚上 10 点。此外,我需要根据每个客户的 TZ 来做到这一点 那么我想知道你为什么接受了我从一开始就建议的答案? 【参考方案1】:

PHP 可以原生处理时区。您只需在 olson format 中设置时区,例如 America/New_York。

然后您可以使用date_default_timezone_set 或任何其他了解时区的php DateTime 东西。

稍微细读PHP docs 会很有帮助。尤其是here 和here。

【讨论】:

是的,但这不会改变整个脚本中所有日期和时间函数的所有日期和时间行为,我只能修改一个函数,此外,这不是我的服务器并且正在更改满足我作为开发人员的需求的功能不是一种选择。 这只是一个简单的例子。您可以改用DateTime 类,它将DateTimeZone 对象作为参数。正如我之前所说,我强烈建议您通读文档。 试过了,但它说它不识别这个类,我m afraid that means the PHP wasnt 是在考虑到这一点的情况下编译的。不要有重新编译 PHP 的奢侈。 您使用的是什么版本的 PHP?这是自 5.2.0 版以来内置的... 谢谢,问题解决了 :),你得到了我的投票

以上是关于夏令时问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无论夏令时如何,如何创建代表重复事件的日期时间列表?

通过在java中提供年份来确定下一个夏令时[重复]

针对当前时区调整的不同夏令时的UTC日期[重复]

.net 为夏季夏令时增加一小时 [重复]

11 月第一个星期日的重复时间 (1 AM-1:59:59 AM) - 夏令时结束日 - Oracle

JavaScript、时区和夏令时