我使用的 CMS 允许我访问用户与 UTC/GMT 时间的时间偏移量。因此,如果用户将他们的时区设置为 EST,那么这个偏移量将是“-5”。
当我需要显示当前时间时,我现在正在做的事情是:
date('M j Y h:i A', time() + $offset*3600)
这有效,除非夏令时对用户有影响,否则会晚一个小时。
所以,我的问题是,我如何确定给定的时间偏移量(如“-5”)是否需要增加一个小时?
您不能仅从偏移量中得出这一点,因为偏移量适用于整个纬度,并且其上的国家/地区没有有效的统一 DST。例如在澳大利亚,昆士兰、北领地或西澳大利亚没有夏令时,但在其他地方。您必须对您的用户进行地理定位,然后使用PHP 的 DateTimeZone API检查该国家/地区是否有 DST。
另请参阅如何自动检测用户的时区?
如果您只有“-5”,那么您没有足够的信息来做出决定。如果您可以安排访问用户所在时区的名称(例如“America/New_York”),那将是更好的选择。