我正在使用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中显示时间偏移。只要我们知道时间偏移是正确的,我们就不关心使用哪个标识符(幕后)。
啊哈。那么你能推荐跟踪用户时区首选项的最佳方法吗? – ackerchez 2012-03-06 20:56:48
@ackerchez:你可能可以在配置文件设置中获得选择,最常用的时区名称(如大多数论坛引擎) – zerkms 2012-03-06 21:02:38
最好的猜测可能是基于猜测的位置(基于ip或许) – Evert 2012-03-06 21:05:21