将IANA / Olson时区数据库映射到缩写(如EST,PST等)

时间:2013-08-15 10:20:58

标签: timezone abbreviation iana

我需要将IANA / Olson时区ID映射到缩写,如EST,PST等。

据我所知,这不是一对一的映射,例如,对于EST,有相当多的IANA时区。

我可以使用某种数据库/映射吗?

PS:最好使用JavaScript解决方案,但是可以帮助我构建此映射的任何信息( IANA时区ID - >缩写)表示赞赏。

2 个答案:

答案 0 :(得分:3)

IANA TZDB源数据确实已有缩写,但必须针对相关日期计算它们。您可以在示例数据hereZone.FORMATRule.LETTER/S列中看到它。

由于时区缩写如CST can be ambiguous,因此建议您仅使用它们向人类展示。永远不要试图将它们用于另一个方向,因为大多数实现只会识别少数几个,并且它们往往只对美国有效。

由于您要求代码可以为您执行此操作,请查看my answer中代码的下半部分,了解如何使用.Net中的Noda Time执行此操作。 (上半部分是关于首先从Windows区域转换到IANA区域,您不需要。)

您可以查看the several TZDB libraries for JavaScript中的一个,但我不确定是否有任何直接公开缩写数据。此外,对于这么小的东西来说,这有点沉重。

答案 1 :(得分:2)

在使用joda-time的java中,我们可以从iana id获取时区缩写,如下所示

DateTimeZone dz = DateTimeZone.forID("America/New_York");
String tzid = dz.getShortName(DateTimeUtils.currentTimeMillis());
//tzid will be 'EST'

String longerTimeZoneName = dz.getName(DateTimeUtils.currentTimeMillis());
//longerTimeZoneName  will be 'Eastern Standard Time'