时区或UTC位置的偏移量

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

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

我知道图书馆的时刻。但是图书馆并不支持所有的美国城市,像下面这样的东西

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

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

一些东西:

  • 你不能得到一个时区或单独的缩写,因为根据你如何解释它(“中央标准时间”,“古巴标准时间”,中国标准时间), CST可能是-5,-6或+8。 “中国标准时间”)。

  • 您也无法单独获取时区或城市名称的偏移量,因为在世界各地有许多同名的城市。 例如, Paris可能意味着巴黎,法国,也可能意味着巴黎,德克萨斯州,美国或其他任何称为巴黎的地方 。 根据城市的不同,您也可能会得到不同语言的城市拼写,如乌克兰的首都拼写英文的Kyiv和乌克兰的Kyiv

  • Moment支持IANA时区标识符的标准列表。 他们不是世界上所有的城市,而是一个特定的string,有时是基于一个大城市的名字。 有很多例外。

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

  1. parsing您的位置以近似经度和纬度坐标。 这就是所谓的地理编码 ,有很多API和数据库可以帮助你。 例如, Google地图地理编码API 。

  2. 将坐标parsing为IANA时区标识符。 有很多方法,包括谷歌地图时区API和这个答案中列出的许多其他。 然后你可以使用Moment.js和其他的标识符。