(这个问题类似于 Long form name of timezone in NodaTime但不同)。
/usr/share/zoneinfo
中的每个时区文件都有0个或更多时区
缩写。例如,America/Chicago
有五个缩写:
CDT
,CPT
,CST
,CWT
和EST
。作为参考,我通过这样做找到了这些:
cd /usr/share/zoneinfo
zdump -v America/Chicago | perl -anle 'print $F[13]' | sort | uniq
文件和缩写的每个组合在某种意义上代表a 不同的时区。对于美国/芝加哥的例子,并非所有这些 时区仍在使用中。
我的问题:我在哪里可以找到文件名/缩写列表 组合映射到长形式时区名称?
我正在寻找的“美国/芝加哥”部分看起来像这样:
Filename Abbreviation Full Name
America/Chicago CDT Central Daylight Time
America/Chicago CPT [no longer used]
America/Chicago CST Central Standrad Time
America/Chicago CWT [no longer used]
America/Chicago EST Eastern Standard Time
(我很好,没有被命名的时间区域)。
我熟悉CLDR(http://cldr.unicode.org/),但是
其中的common/supplemental/windowsZones.xml
文件似乎是
非常不准确(它也略微不完整,但事实并非如此
这是一笔大交易)。例如,此行(唯一匹配CST6CDT
的行):
<mapZone other="Central Standard Time" territory="ZZ" type="CST6CDT"/>
指出CST6CDT
时区的名称是“中央标准”
时间“,这是不正确的。
CST6CDT
通常被称为“中央时间”,并且是GMT-5(“中央时间”
白天时间“)在夏令时和GMT-6(”中央
标准时间“)在夏令时之外。
全年称它为“中央标准时间”是不正确的。打电话给它 全年的“中央时间”是可以接受的,但是会很好 区分标准时间和夏令时间。
我考虑过寻找“缩写为长名”翻译器, 但这不起作用,因为/ usr / share / zoneinfo重复 缩写。例如,“EST”表示“东部标准时间” 文件“EST5EDT”,但文件中的“澳大利亚东部标准时间” “澳大利亚/墨尔本”。
我考虑过使用common/supplemental/windowsZones.xml
然后
如果为。设置了isdst标志,则将'standard'替换为'daylight'
具体的时间我正在考虑,但这似乎是kludgey。
任何帮助表示赞赏。