5

我使用的 CMS 允许我访问用户与 UTC/GMT 时间的时间偏移量。因此,如果用户将他们的时区设置为 EST,那么这个偏移量将是“-5”。

当我需要显示当前时间时,我现在正在做的事情是:

date('M j Y h:i A', time() + $offset*3600)

这有效,除非夏令时对用户有影响,否则会晚一个小时。

所以,我的问题是,我如何确定给定的时间偏移量(如“-5”)是否需要增加一个小时?

4

3 回答 3

8

http://php.net/manual/en/function.date.php

I (大写 i) | 日期是否为夏令时 | 如果夏令时为 1,否则为 0。

这有帮助吗?

于 2012-06-24T23:09:10.627 回答
6

您不能仅从偏移量中得出这一点,因为偏移量适用于整个纬度,并且其上的国家/地区没有有效的统一 DST。例如在澳大利亚,昆士兰、北领地或西澳大利亚没有夏令时,但在其他地方。您必须对您的用户进行地理定位,然后使用PHP 的 DateTimeZone API检查该国家/地区是否有 DST。

另请参阅如何自动检测用户的时区?

于 2012-06-24T22:27:15.217 回答
2

如果您只有“-5”,那么您没有足够的信息来做出决定。如果您可以安排访问用户所在时区的名称(例如“America/New_York”),那将是更好的选择。

于 2012-06-24T22:27:20.830 回答