【问题标题】:Mapping IANA/Olson timezone database to abbreviations (like EST, PST, etc)将 IANA/Olson 时区数据库映射到缩写(如 EST、PST 等)
【发布时间】:2013-08-17 12:36:13
【问题描述】:

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

我知道这不是一对一的映射,例如,对于 EST,有很多 IANA 时区。

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

PS:JavaScript 解决方案更可取,但感谢任何可以帮助我构建此映射的信息(IANA 时区 ID -> 缩写)。

【问题讨论】:

    标签: timezone abbreviation iana


    【解决方案1】:

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

    由于CST can be ambiguous 等时区缩写,因此仅建议您将它们用于向人类显示。切勿尝试将它们用于另一个方向,因为大多数实现只能识别少数几个,而且它们往往仅对美国有效。

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

    您可以查看the several TZDB libraries for JavaScript 之一,但我不确定是否有任何直接公开缩写数据。再说了,这么小的东西有点重。

    【讨论】:

      【解决方案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'
      

      【讨论】:

      • 我们能否从时区缩写(如 ESTAmerica/New_York)中获取 IANA 格式
      猜你喜欢
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 2014-05-21
      • 2015-10-16
      • 2016-11-10
      • 2013-02-18
      • 2011-02-06
      相关资源
      最近更新 更多