我試圖在android中獲取UTC偏移量。由於模擬器不斷返回0,我不知道我是否正確地做到了這一點。如何在秒鐘內獲取UTC偏移量android
Calendar c=Calendar.getInstance();
TimeZone tz=c.getTimeZone();
int offsetFromUtc=tz.getOffset(0)/1000;
當我把0放在tz.getOffset中,這意味着我只想從gmt中得到秒數。 讓我知道我在做什麼是正確的。謝謝
我試圖在android中獲取UTC偏移量。由於模擬器不斷返回0,我不知道我是否正確地做到了這一點。如何在秒鐘內獲取UTC偏移量android
Calendar c=Calendar.getInstance();
TimeZone tz=c.getTimeZone();
int offsetFromUtc=tz.getOffset(0)/1000;
當我把0放在tz.getOffset中,這意味着我只想從gmt中得到秒數。 讓我知道我在做什麼是正確的。謝謝
時區偏移量可能會在一年中發生變化,也許最常見的原因是夏令時。而不是將0至TimeZone.getOffset()的使用當前時間來得到當前偏移,創建一個新的日期,並得到其時間價值:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime())/1000;
模擬器默認爲UTC,嘗試檢查可用的時區進行測試。您還可以通過時區開關設置時區,check the documentation用於時區。
模擬器的默認時區是格林尼治標準時間,這意味着您將始終得到0的偏移量。 您的代碼看起來很好(我沒有嘗試它)。 嘗試將模擬器的時區更改爲其他內容並檢查您的代碼。 看一看這個開放的帖子:Link
我忘了夏令時,感謝您的高舉 –
這實際上並不完整。並非所有的時區都是全天候的,委內瑞拉的時區都是小數點,例如-4.5。這應該是一個float/double而不是int。 – Dev2rights
[getOffset](http://developer.android.com/reference/java/util/TimeZone.html#getOffset(long))爲分數時區返回int,精度很高,一直到秒。 –