4

这个问题与 tzinfo aka Olson Timezone Database 中的标准时区列表有关。

示例 1:我注意到使用 America/New_York 或 America/Detroit(被称为“示范城市”,参见http://www.w3.org/International/docs/timezones/#tzids)而不是 US/Eastern。

示例 2:在加拿大,Mountain 时区通常被描述为 America/Edmonton 而不是 Canada/Mountain。不列颠哥伦比亚省的部分地区处于山区时间,但它们的时区被指定为美国/埃德蒙顿(位于阿尔伯塔省)。

在这些情况下,为什么要使用区域/示例城市选项而不是国家/地区版本?首先创建国家/地区版本肯定是有原因的,但是如果它不是首选方式,为什么会存在呢?

当一个国家有多个时区时,这主要是一个问题。

某处是否有最佳实践说明为什么一个比另一个更受欢迎?

(PS 这对谷歌来说是一个难题,因为你得到了所有不相关或无用的结果。我能找到的最接近的是夏令时和时区最佳实践,但它没有解决这个问题。)

编辑:2个时区可以代表1个城市吗?有“因为不是每个人都使用规范的大陆/城市表示法作为他们的时区(例如,我倾向于使用旧的美国/太平洋表示法 - 它仍然受支持,但相当于 America/Los_Angeles)。” 他关于“美国/太平洋”较旧的断言与我的间接假设相矛盾,即它较新,但仍然不是答案。

4

1 回答 1

6

Theory随 Olson 数据库分发的文件包含以下信息:

时区规则文件的名称

时区规则文件命名约定试图在以下目标之间取得平衡:

  • 唯一标识自 1970 年以来所有时钟一致的每个国家地区。这对于预期用途至关重要:保持当地民用时间的静态时钟。

  • 向人类指示该区域的位置。这简化了 [原文如此] 的使用。

  • 在存在政治变化的情况下保持稳健。这减少了更新和向后兼容黑客的数量。例如,通常不使用国家名称,以避免在国家更改名称(例如扎伊尔⟶刚果)或地点更改国家(例如香港从英国殖民地到中国)时出现不兼容。

  • 可移植到各种实现。这促进了该技术的使用。

  • 在全球范围内使用一致的命名约定。这简化了使用和维护。

此命名约定不适用于没有经验的用户自行选择 TZ 值(尽管他们当然可以检查和重用现有设置)。分销商应提供说明名称的文件和/或简单的选择界面;例如,请参阅随此发行版提供的“tzselect”程序。

名称通常采用 AREA/LOCATION 形式,其中 AREA 是大陆或海洋的名称,LOCATION 是该区域内特定位置的名称。北美和南美共享同一地区,“美国”。典型名称是“Africa/Cairo”、“America/New_York”和“Pacific/Honolulu”。

以下是用于选择位置名称的一般规则,按重要性降序排列:

  • 仅使用有效的 POSIX 文件名组件(即,名称中除 ' /' 之外的部分)。在文件名组件中,仅使用 ASCII 字母、' .'、' -' 和 ' _'。不要使用数字,因为这可能会使 POSIX TZ 字符串产生歧义。文件名组件不得超过 14 个字符或以 ' -' 开头。例如,更喜欢“文莱”而不是“Bandar_Seri_Begawan”。
  • 每个国家/地区的每个时区规则集至少包含一个位置。一个这样的位置就足够了。使用 ISO 3166(参见文件 iso3166.tab)来帮助确定某事物是否是一个国家。但是,像布维岛这样的无人居住的 ISO 3166 地区不需要位置,因为那里没有定义当地时间。
  • 如果一个国家地区的所有时钟自 1970 年以来都一致,即使次区域的时钟在 1970 年之前不一致,也不要费心将多个位置包括在内。否则这些表会变得非常大。
  • 如果名称不明确,请使用不那么模糊的替代名称;例如,许多城市被命名为 San Jose 和 Georgetown,因此更喜欢 'Costa_Rica' 到 'San_Jose' 和 'Guyana' 到 'Georgetown'。
  • 保持位置紧凑。使用城市或小岛,而不是国家或地区,以便将来的任何时区更改不会将位置拆分为不同的时区。例如,更喜欢“巴黎”而不是“法国”,因为法国有多个时区。
  • 使用主流英语拼写,例如更喜欢“Rome”而不是“Roma”,更喜欢“Athens”而不是真名(使用希腊字母)。POSIX 文件名限制鼓励此规则。
  • 使用一个国家时区中人口最多的地点,例如更喜欢“上海”而不是“北京”。在人口相似的地点中,选择最知名的地点,例如更喜欢“罗马”而不是“米兰”。
  • 使用单数形式,例如更喜欢“Canary”而不是“Canaries”。
  • 省略常见的后缀,如“_Islands”和“_City”,除非这会导致歧义。例如,更喜欢 'Cayman' 到 'Cayman_Islands' 和 'Guatemala' 到 'Guatemala_City',但更喜欢 'Mexico_City' 到 'Mexico' 因为墨西哥这个国家有多个时区。
  • 使用 ' _' 表示空格。
  • 在名称的缩写中省略 ' .',例如更喜欢 'St_Helena' 而不是 'St._Helena'。
  • 如果只是轻微违反上述规则,请勿更改已建立的名称。例如,不要仅仅因为米兰的人口增长到比罗马多一些,就将现有名称“罗马”更改为“米兰”。
  • 如果更改了名称,请将其旧拼写放入backward文件中。

该文件zone.tab列出了用于命名时区规则文件的地理位置。它旨在成为地理区域规范名称的详尽列表。


请注意,最近(2012 年 8 月)在tz@iana.org邮件列表中出现了关于“上海优先北京”指南的争议。

于 2012-08-17T19:48:36.033 回答