我正在使用的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"),则最好这样做。