时区文件+缩写 - >长名称(优于CLDR)

时间:2015-11-03 14:25:40

标签: datetime timezone

(这个问题类似于 Long form name of timezone in NodaTime但不同)。

/usr/share/zoneinfo中的每个时区文件都有0个或更多时区 缩写。例如,America/Chicago有五个缩写: CDTCPTCSTCWTEST。作为参考,我通过这样做找到了这些:

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。

任何帮助表示赞赏。

0 个答案:

没有答案