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
邮件列表中出现了关于“上海优先北京”指南的争议。