2013-04-17 88 views
1

我使用http://ipinfodb.com/ api爲了得到用戶緯度/經度... I have用戶時區格式的數組。數組返回以下信息...獲取用戶當前時間在php與他們的緯度/經度/城市

array(11) { 
    ["statusCode"]=> string(2) "OK"... 
    ["countryCode"]=> string(2) "CA" 
    ["countryName"]=> string(6) "CANADA" 
    ["regionName"]=> string(16) "BRITISH COLUMBIA" 
    ["cityName"]=> string(8) "VANCOUVER" .... 
    ["timeZone"]=> string(6) "-07:00" 
} 

隨着從陣列的信息,如何將我發現用戶當前的時候,我有他們在-07格式時區:00,04:00 .. 。etc等

+0

有沒有機會獲取時區名稱?你有沒有檢查過DateTime類? – zerkms

+0

不幸的是,我一直沒能找到任何這種性質的東西...... – uneducatedguy

+0

他們的時區例如。 -07:00可能與UTC有偏移。那麼您只需將該偏移量應用於當前UTC時間即可。 –

回答

4

「時區」不是偏移量!令我困擾的是,如此多的API會造成這種常見的錯誤。不要被返回字段稱爲「timezone」的事實所迷惑。

「時區」是一年中可能有一個或多個偏移量的區域。您可以解析時區和日期的偏移量,但無法走向另一個方向! A list of TZDB time zones is here

具體時區爲America/Vancouver - 不是因爲您的經緯度與溫哥華市相匹配,而是因爲溫哥華恰好是您所在位置時區的參考城市。不是每個城市都有自己的時區ID,所以你不能做出任何假設。

-07:00是當前偏移爲America/Vancouver時區。恰好是夏令時抵消。當夏令時結束時,它將更改爲-08:00。看來您使用的特定Web服務不會顯示此信息。

在StackOverflow上還有幾個其他問題已經回答瞭如何從經緯度解析實際時區。您可以調用Web服務,也可以使用自己的數據庫。這裏有一些鏈接:

我敢肯定有更多。我很想把它作爲一個副本來關閉,但我之前沒有看到ipinfodb.com。

如果你確信你的API返回當前偏移,只是想和你用戶的當前時間,然後根據喬納森的問題的評論中指出,你可以將偏移到當前UTC時間你會知道在那個地方的時間。但是你必須每次都這樣做。您不能保存該偏移量並稍後再使用它。爲此,您需要全時區參考。

+0

馬特,感謝您花時間回答這個問題。這足以讓我走了。 – uneducatedguy

+0

沒問題!樂意效勞! :) –

+0

另請參閱[這個社區維基條目](http://stackoverflow.com/q/16086962/634824) –

相關問題