将时区偏移量转换为名称


Converting Timezone Offset into Name

我正在使用Javascript来存储用户当前的GMT偏移时区,我想将其转换为PHP时区名称。

如果我的偏移量为"300"或"-200",如何将其转换为 php 时区名称?

谢谢!

不幸的是,我刚才遇到了你的问题,所以答案似乎有点晚了,但我还是发布了它。

您绝对可以将时间偏移量转换为时区名称。基本上这是通过以下代码行执行的:

$zoneName = timezone_name_from_abbr('', $offset*3600);

其中$offset是以小时为单位的时间偏移量。由于 PHP 中的一些已知错误/功能,这种简化的方法在某些情况下可能会失败,因此有一个带有解决方法的扩展包装器,可以在 php.net 站点上找到。除此之外,包装器还支持夏令时标志。

事实上,正如@zerkms在他的回答中指出的那样,时间偏移量和时区名称之间没有一对一的关系,因为几个时区通常共享相同的偏移量。此函数返回与给定偏移量对应的第一个找到的时区。哪一个确切地走第一个,不是预定义的。

但无论如何,此功能对于通过date_default_timezone_set为用户会话设置首选时区非常方便,它仅接受时区标识符,但可能会在 Web UI 中向用户显示时间偏移量。我们不关心使用哪个标识符(在幕后(,只要我们知道时间偏移量是正确的。

根据定义,这是不可能的。

几个时区可能具有相同的偏移量(这也取决于一年中的时间(