我可以访问用户与UTC/GMT时间的时差,因为我使用的CMS允许我这样做。例如,如果用户将时区设置为EST,则此偏移量为“-5”。 现在,当我需要显示当前时间时,我的做法如下: date('M j Y h:i A', time() + $offset*3600) 这段代码可以正常工作,但是当用户处于夏令时时,它会与实际时间相差一个小时。 那么,我的问题是,如何确定特定的时间偏移量(如“-5”)是否需要增加一小时?
你不能仅通过偏移量来推导这一点,因为偏移量适用于整个纬度,在该纬度上没有统一的夏令时生效的国家。例如在澳大利亚,昆士兰州、北领地或西澳大利亚不执行夏令时,但其他地方都是。你需要对用户进行地理定位,然后使用PHP的DateTimeZone API检查该国家是否有夏令时。另请参见如何自动检测用户的时区?