【问题标题】:Why are there different timezones between DateTimeZone :: listAbbreviations() and DateTimeZone :: listIdentifiers ()为什么 DateTimeZone :: listAbbreviations() 和 DateTimeZone :: listIdentifiers () 之间存在不同的时区
【发布时间】:2020-12-01 17:36:47
【问题描述】:

我想获取所有时区的列表。

当我使用DateTimeZone::listIdentifiers() 我得到一个清单,

当我使用 DateTimeZone::listAbbreviations() 时,我会得到一个包含不同条目的列表。

每个列表都有不在第二个列表中的值。 如何获取完整列表?

为什么这两个功能有区别?

【问题讨论】:

标签: php datetime timezone


【解决方案1】:

标识符和缩写是不同的东西,因此您会得到不同的列表。

一个标识符绑定到一个位置,因此一个时区(中欧时间)通常会与多个标识符(欧洲/马德里、欧洲/巴黎、欧洲/柏林...)相关,并且一个相同的标识符可以切换时间区域(欧洲/马德里是欧洲中部时间,UTC+1,冬季和欧洲中部夏令时间,UTC+2,夏季)。

缩写与时区绑定,因此单个缩写 (CET) 仅映射到一个时区(中欧时间,UTC+1)。

如果您检查 DateTimeZone::listAbbreviations()) 的输出,您会看到每个时区缩写都包含其已知位置标识符的列表,并且它们不是唯一的,因为其中许多会因夏令时或政治原因切换时区变化。

【讨论】:

    【解决方案2】:

    您是否使用函数“timezone_identifiers_list()”? 返回参数为数组, exp: $timezone_list = timezone_identifiers_list(); print_r($timezone);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 2013-03-14
      • 2014-09-30
      • 2010-11-29
      • 2021-03-03
      • 2014-12-14
      相关资源
      最近更新 更多