【问题标题】:Half hour time zones missing缺少半小时时区
【发布时间】:2015-08-31 02:08:07
【问题描述】:

在 PHP 中,我使用DateTimeZone::listIdentifiers() 获取时区列表供用户选择。这似乎工作正常,但此列表中缺少半小时时区。

尤其是纽芬兰、伊朗和印度。任何人都知道如何让他们回来,为什么他们失踪了? PHP docs show them as "don't use these timezones" 但它们仍在世界范围内使用,它们似乎没有在 the "valid" list anywhere here. 中列出

有什么想法吗?

【问题讨论】:

  • 仅供参考,Australia/Adelaide 是一个半小时的偏移区域,它在列表中,所以整个半小时的事情不是原因
  • @RobbieAverill 这个问题排在第一位,所以一个是重复的

标签: php date


【解决方案1】:

【讨论】:

    【解决方案2】:

    这里只是猜测,但看起来默认的$what 参数是DateTimeZone::ALL,并且您想使用现在仅存在的标识符以实现向后兼容性 - 所以您应该使用DateTimeZone::ALL_WITH_BC

    print_r(DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC));
    

    请注意,the manual 确实表示不要使用它们。

    以伊朗为例,您可以将其替换为亚洲/德黑兰时区。

    【讨论】:

      【解决方案3】:

      在扫描 420 左右的列表时,我似乎忽略了几个半小时时区。这样做的最终结果是,是的,时区就在那里。在 IANA 列表中,他们都改变了原来的名字。

      在 IANA 如何表示要使用的链接时区以及 PHP 如何准确实现它方面似乎存在细微差别,这现在处于“绝对不是错误,但在文档中清晰如泥”的领域,并且已经一种解决方案。

      https://bugs.php.net/bug.php?id=66102

      这个 Github 搜索也使其更加清晰: https://github.com/eggert/tz/search?utf8=%E2%9C%93&q=Newfoundland

      所以,他们就在那里。我仍然对可用性以及我们的用户在寻找他们的时区时是否会理解选择 America/St_Johns 等存在一些担忧。我们正在与我们的用户进行一些研究。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 2014-03-10
        • 2015-10-05
        相关资源
        最近更新 更多