2012-12-04 40 views
4

這個硬編碼GMT+2就像一個魅力。TimeZone.getDefault()不給我我所在的時區

calendarCurrent.setTimeZone(TimeZone.getTimeZone("GTM+2")); 

五言我並不需要它硬編碼的,所以我用

calendarCurrent.setTimeZone(TimeZone.getDefault()); 

但這從來沒有給我應有的價值。難道我做錯了什麼?

+0

我剛跑'Log.d(TAG,TimeZone.getDefault()。toString());'在設置爲英國時間的電話上得到了'org.apache.harmony.luni.internal.util.ZoneInfo [ 「GMT」,mRawOffset = 0,mUseDst =真]'。 (我們現在不在DST中,但我認爲mUseDst可能意味着它將來會了解DST。)你說的是什麼? – emrys57

+0

什麼是預期值/實際值,以及您的設置中設置的時區是什麼? – njzk2

回答

0

系統會自動檢測到默認的時區,因此您不需要明確調用TimeZone.setDefault()。

時區自動檢測在模擬器上不起作用,但您可以使用-timezone啓動標誌對其進行設置。

此外,爲了改變時區推薦的方法是通過設置應用程序,這不是沒有包含在當前的SDK .. 現在你可以使用以下命令:

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
alarm.setTimeZone(timezone); 

它與

<uses-permission android:name="android.permission.SET_TIME_ZONE"/>

+0

......我很想知道爲什麼對這個答案進行倒票。它是完整的,內容豐富的,並幫助我理解爲什麼在模擬器上測試時我沒有獲得正確的TimeZone。 – dell116

相關問題