【问题标题】:Timezone or location to UTC offset时区或位置到 UTC 偏移量
【发布时间】:2018-03-01 11:47:08
【问题描述】:

我需要可以将时区转换为 utc 偏移量的库。我有美国城市的列表,我知道他们的区域(PST、EST ....)和位置。所以我的策略可以是

  • library.getOffset('城市位置')
  • myLibraryOrOtherLibrary.getOffset('EST')

我知道图书馆 moment.js 。但是图书馆不支持所有美国城市,如下所示

    moment().tz("America/Los_Angeles").format();

我应该自己实现一些东西还是有其他库或者我可以通过其他方式使用 moment.js?

【问题讨论】:

    标签: node.js timezone momentjs timezone-offset


    【解决方案1】:

    一些事情:

    • 您无法单独获得时区或与缩写的偏移量,因为存在诸如 CST 之类的歧义,这可能是 -5、-6 或 +8,具体取决于您的解释方式(“中部标准时间", "古巴标准时间", "中国标准时间")。

    • 您也无法单独获得时区或与城市名称的偏移量,因为世界各地有许多同名城市。例如,Paris 可能表示法国巴黎,也可能表示美国德克萨斯州巴黎或any of the other places called Paris。根据城市的不同,您还可能会得到不同语言的不同城市拼写,例如乌克兰首都的英文拼写为Kiev,乌克兰语拼写为Kyiv。

    • Moment 支持IANA time zone identifiers 的标准列表。它们不是世界上所有的城市,而是有时基于主要城市名称的特定字符串。有很多例外。

    最终,解决这个问题的最佳方法是分两步:

    1. 将您的位置解析为近似纬度和经度坐标。这称为地理编码,有许多可用的 API 和数据库可以帮助您解决这个问题。例如,Google Maps Geocoding API。

    2. 将坐标解析为 IANA 时区标识符。有很多方法可以做到这一点,包括Google Maps Time Zone API,以及许多其他列出的in this answer。然后,您可以将此标识符与 Moment.js 和其他人一起使用。

    【讨论】:

      猜你喜欢
      • 2012-08-02
      • 2014-02-04
      • 2017-10-18
      • 2011-11-08
      • 2014-03-27
      • 2015-02-14
      • 2016-05-07
      • 2013-10-15
      相关资源
      最近更新 更多