我需要可以将时区转换为utc偏移量的库。我有美国城市名单,我知道他们的区域(PST,EST ......)和位置。所以我的策略可以是
我知道图书馆的时刻.js。但是,图书馆并不支持所有美国城市,如下所示
moment().tz("America/Los_Angeles").format();
我应该自己实现某些东西还是有其他库,或者我可以用其他方式使用moment.js?
答案 0 :(得分:2)
一些事情:
您无法单独从缩写中获取时区或偏移量,因为CST
之类的歧义可能是-5,-6或+8,具体取决于您的解释方式(“Central标准时间“,”古巴标准时间“,”中国标准时间“)。
您也无法单独获取城市名称的时区或偏移量,因为世界各地的许多城市都有相同的名称。例如,Paris
可能意味着巴黎,法国或它可能意味着巴黎,德克萨斯州,美国或any of the other places called Paris。根据城市的不同,您也可能会针对不同的语言对城市进行不同的拼写,例如乌克兰的首都拼写为Kiev
英语和Kyiv
乌克兰语。
Moment支持IANA time zone identifiers的标准列表。它们不是世界上所有的城市,而是一个有时基于主要城市名称的特定字符串。有很多例外。
最终,解决此问题的最佳方法分两步:
解析您的位置以近似纬度和经度坐标。这称为地理编码,并且有许多可用的API和数据库可以帮助您解决此问题。例如,Google Maps Geocoding API。
将坐标解析为IANA时区标识符。有很多种方法,包括Google Maps Time Zone API和其他许多列出in this answer的方法。然后,您可以将此标识符与Moment.js和其他人一起使用。