时区或UTC偏移的位置

时间:2017-09-20 12:07:03

标签: node.js timezone momentjs timezone-offset

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

  • library.getOffset('city location')
  • myLibraryOrOtherLibrary.getOffset( 'EST')

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

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

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

1 个答案:

答案 0 :(得分:2)

一些事情:

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

  • 您也无法单独获取城市名称的时区或偏移量,因为世界各地的许多城市都有相同的名称。例如,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和其他人一起使用。