Node.js 时区或位置到UTC偏移

Node.js 时区或位置到UTC偏移,node.js,timezone,momentjs,timezone-offset,Node.js,Timezone,Momentjs,Timezone Offset,我需要一个可以将时区转换为utc偏移量的库。我有美国城市的名单,我知道他们的区域(太平洋标准时间,东部时间…)和位置。所以我的策略是 library.getOffset('城市位置') myLibraryOrOtherLibrary.getOffset('EST')) 我知道library moment.js,但library不支持所有的美国城市 moment().tz("America/Los_Angeles").format(); 我应该自己实现一些东西,还是有其他库,或者我可

我需要一个可以将时区转换为utc偏移量的库。我有美国城市的名单,我知道他们的区域(太平洋标准时间,东部时间…)和位置。所以我的策略是

  • library.getOffset('城市位置')
  • myLibraryOrOtherLibrary.getOffset('EST'))
我知道library moment.js,但library不支持所有的美国城市

    moment().tz("America/Los_Angeles").format();
我应该自己实现一些东西,还是有其他库,或者我可以用其他方式使用矩.js?

以下几点:

  • 您无法仅从缩写中获取时区或偏移量,因为存在诸如
    CST
    之类的歧义,根据您对其的解释(“中央标准时间”、“古巴标准时间”、“中国标准时间”)可以是-5、-6或+8

  • 您也无法仅从城市名称获取时区或偏移量,因为世界各地有许多同名城市。例如,
    Paris
    可能意味着巴黎、法国,也可能意味着巴黎、德克萨斯、美国或美国。根据城市的不同,你可能会得到不同语言的城市拼写,例如乌克兰首都的英语拼写为
    Kiev
    ,乌克兰语拼写为
    kiiv

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

最终,解决此问题的最佳方法分为两步:

  • 将您的位置解析为近似的纬度和经度坐标。这称为地理编码,有许多API和数据库可以帮助您实现这一点。例如

  • 将坐标解析为IANA时区标识符。有许多方法可以实现这一点,包括,以及列出的许多其他方法。然后,您可以将此标识符用于矩.js和其他文件