我正在使用Javascript来存储用户当前的GMT偏移时区,并希望将其转换为PHP时区名称。
如果我的偏移量是"300"或"-200",我如何将其转换为PHP时区名称?
谢谢!
我正在使用Javascript来存储用户当前的GMT偏移时区,并希望将其转换为PHP时区名称。
如果我的偏移量是"300"或"-200",我如何将其转换为PHP时区名称?
谢谢!
很遗憾,我刚刚看到了你的问题,所以答案可能有点晚,但我还是会回答。
你可以将时间偏移量转换为时区名称。基本上,这可以通过以下代码行来执行:
$zoneName = timezone_name_from_abbr('', $offset*3600);
其中$offset
是以小时为单位的时间偏移量。这种简化方法可能因PHP中一些已知的错误/功能而失败,因此有一个扩展包装器带有解决方法,可以在php.net网站上找到。除其他外,该包装器还支持夏令时标志。
确实,正如@zerkms在他的答案中所指出的那样,时间偏移和时区名称之间不存在一对一的关系,因为几个时区通常共享相同的偏移量。此函数返回与给定偏移相对应的第一个发现的时区。首先选择哪一个未预定义。
但无论如何,此函数非常方便,可通过date_default_timezone_set
为用户会话设置首选时区,后者仅接受时区标识符,但用户可能在Web UI中显示时间偏移量。只要我们知道时间偏移量是正确的,就不关心使用哪个标识符(在幕后)。
根据定义,这是不可能的。
几个时区可能具有相同的偏移量(这也取决于一年中的时间)。
timezone_name_from_abbr('', $offset*3600, 0)
。请参考http://php.net/manual/en/function.timezone-name-from-abbr.php。 - Sos.