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

Nat*_*ate 5 php time timezone

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

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

date('M j Y h:i A', time() + $offset*3600)
Run Code Online (Sandbox Code Playgroud)

这种方法有效,除非夏令时对用户有影响,然后落后一小时.

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

Joã*_*ves 8

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

我(资本i)| 日期是否在夏令时| 如果夏令时为1,否则为0.

这有帮助吗?


Gor*_*don 6

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

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