2017-09-20 177 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等一起使用。