我正在使用的CMS允许我访问用户与UTC/GMT时间的时间偏移.因此,如果用户将其时区设置为EST,则此偏移量将为"-5".
当我需要显示当前时间时,我正在做的事情如下:
date('M j Y h:i A', time() + $offset*3600)
Run Code Online (Sandbox Code Playgroud)
这种方法有效,除非夏令时对用户有影响,然后落后一小时.
所以,我的问题是,我如何确定给定的时间偏移(如"-5")是否需要添加一个小时?
你不能仅从偏移中得出这个,因为偏移适用于整个纬度,并且那些国家没有统一的DST生效.例如在澳大利亚,昆士兰州,北领地或西澳大利亚州没有观察到夏令时,但在其他地方都没有.您必须对用户进行地理定位,然后使用PHP的DateTimeZone API检查该国家/地区是否存在DST.
另请参阅如何自动检测用户的时区?