为什么 tzinfo 使用城市时区而不是地区时区?

Pix*_*xel 5 timezone tzinfo

这个问题与 tzinfo 又名 Olson 时区数据库中的标准时区列表有关。

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

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

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

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

是否有最佳实践说明为什么其中一种优于另一种?

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

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

Jon*_*ler 6

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

\n\n

时区规则文件名称

\n\n

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

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

  • \n
  • 向人类指示该区域在哪里。这简化了[原文如此]的使用。

  • \n
  • 在政治变化面前保持稳健。这减少了\n更新和向后兼容性攻击的数量。例如,\n通常不使用国家/地区名称,以避免\n当国家/地区更改名称时\n(例如扎伊尔\xe2\x9f\xb6Congo)或位置更改国家/地区时\n(例如香港从英国殖民地变为中国)时出现兼容性问题。

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

  • \n
  • 在全世界使用一致的命名约定。\n这简化了使用和维护。

  • \n
\n\n

此命名约定不适合没有经验的用户自己选择 TZ 值(尽管他们当然可以检查并重用现有设置)。分销商应提供\n文档和/或一个简单的选择界面来解释\n名称;请参阅此发行版附带的“tzselect”程序\n示例。

\n\n

名称通常采用 AREA/LOCATION 形式,其中 AREA 是大陆或海洋的名称,LOCATION 是该区域内特定位置的名称。北美洲和南美洲共享同一个区域“美洲”。典型名称为“非洲/开罗”、“美国/纽约”和“太平洋/檀香山”。

\n\n

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

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

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

\n\n
\n\n

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

\n