2017-09-20 90 views
1

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

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

我知道图书馆moment.js。但图书馆没有支持所有的美国人城市进行类似下面

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

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

回答

2

有几件事情:

  • 你不能得到一个时区或从单独的缩写偏移,因为有像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等一起使用。