如何检查时间偏移量是否在夏令时


How to check if a time offset is in daylight savings time?

我正在使用的CMS允许我访问用户与UTC/GMT时间的时间偏移量。因此,如果用户已将其时区设置为 EST,则此偏移量将为"-5"。

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

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

这有效,除非夏令时对用户有影响,然后它落后一个小时。

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

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

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

这有帮助吗?

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

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

如果你只有"-5",那么你没有足够的信息来做出这个决定。如果您可以安排访问用户所在时区的名称(例如"美国/New_York"),则最好这样做。