【问题标题】:Converting Timezone Offset into Name将时区偏移量转换为名称
【发布时间】:2012-03-06 20:54:32
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: php javascript timezone


    【解决方案1】:

    不幸的是,我刚刚遇到了你的问题,所以答案可能看起来有点晚,但我还是发布了它。

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

    $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
    • php.net 站点的解决方法返回 false 为 -2,如何解决?
    【解决方案2】:

    根据定义这是不可能的。

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

    【讨论】:

    • 啊哈。那么,您能否推荐跟踪用户时区偏好的最佳方法?
    • @ackerchez:您可能可以在配置文件设置中选择最常见的时区名称(就像大多数论坛引擎一样)
    • 最好的猜测是基于猜测的位置(也许基于 ip)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2011-06-11
    • 2021-10-16
    • 2012-08-02
    相关资源
    最近更新 更多