我需要将IANA / Olson时区ID映射到缩写,如EST,PST等。
据我所知,这不是一对一的映射,例如,对于EST,有相当多的IANA时区。
我可以使用某种数据库/映射吗?
PS:最好使用JavaScript解决方案,但是可以帮助我构建此映射的任何信息( IANA时区ID - >缩写)表示赞赏。
答案 0 :(得分:3)
IANA TZDB源数据确实已有缩写,但必须针对相关日期计算它们。您可以在示例数据here,Zone.FORMAT
和Rule.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'