2017-02-15 45 views
0

在Android上獲取真實設備TimeZone假設應用中有一個組件覆蓋默認時區TimeZone.setDefault(),讓我們假設沒關係!
(我認爲這是一個不好的做法,但對這個問題的緣故,讓我們只去用它。)即使setDefault被稱爲

在一些地方非常有限的情況下,我還需要實際設備的時區,但TimeZone.getDefault()將提供被重寫的值。

有沒有辦法查詢設備的實際時區(在Android設置中設置/由網絡提供)而不要求Java的TimeZone#getDefault

+0

你能不只是緩存提供給JVM原來的時區你的應用程序運行在哪裏? –

+0

看看[這裏](http://stackoverflow.com/questions/8049912/how-can-i-get-the-network-time-from-the-automatic-setting-called-use-netw/14720918# 14720918),這可能是有用的 – Max

回答

0

你可以使用互聯網,使用這個API請求(來自拉丁語長):

http://api.geonames.org/timezoneJSON?formatted=true&lat=44&lng=11&username=demo

返回:

{ 
    "sunrise": "2017-02-15 07:15", 
    "lng": 11, 
    "countryCode": "IT", 
    "gmtOffset": 1, 
    "rawOffset": 1, 
    "sunset": "2017-02-15 17:45", 
    "timezoneId": "Europe/Rome", 
    "dstOffset": 2, 
    "countryName": "Italy", 
    "time": "2017-02-15 19:27", 
    "lat": 44 
} 
+0

這不符合用戶偏好。如果你去設置,你實際上可以改變你的時區到除你的物理位置以外的東西。 – TWiStErRob