【发布时间】:2012-03-06 20:54:32
【问题描述】:
我正在使用 Javascript 存储用户当前的 GMT 偏移时区,我想将其转换为 PHP 时区名称。
如果我有一个“300”或“-200”的偏移量,我如何将其转换为 php 时区名称?
谢谢!
【问题讨论】:
标签: php javascript timezone
我正在使用 Javascript 存储用户当前的 GMT 偏移时区,我想将其转换为 PHP 时区名称。
如果我有一个“300”或“-200”的偏移量,我如何将其转换为 php 时区名称?
谢谢!
【问题讨论】:
标签: php javascript timezone
不幸的是,我刚刚遇到了你的问题,所以答案可能看起来有点晚,但我还是发布了它。
您绝对可以将时间偏移量转换为时区名称。基本上这是由以下代码行执行的:
$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)。见php.net/manual/en/function.timezone-name-from-abbr.php
根据定义这是不可能的。
几个时区可能有相同的偏移量(这也取决于一年中的时间)
【讨论】: