2016-08-21 127 views
0

我需要在我的應用中獲取當地時間。我正在使用Calendar類用於此目的。在android中獲取默認時區

代碼:

Calendar calendar = Calendar.getInstance(); 

calendar.get(Calendar.HOUR_OF_DAY)顯示小時根據GMT。

我檢查了TimeZone.getDefault().getDisplayName()顯示GMT(這是不正確的)作爲默認的時區,但java.util.TimeZone.getDefault().getDisplayName()顯示正確的時區。 另外calendar.getTime().toString()顯示正確的時間。

我不明白爲什麼有android.icu.util.TimeZonejava.util.TimeZone

編輯之間的這種差異:

最近我發現有兩個日曆的API - java.util.Calendar中(API等級加1)和android.icu.util.Calendar(在API級別24中添加)。

我一直在使用android.icu.util.Calendar了,但測試它在Android M.所以,現在我將使用API​​的java.util.Calendar

+0

http://stackoverflow.com/questions/5369682/get-current-time-and-date-on-android – Nabin

+0

@NabinKhadka我收到時間GMT時區。但我的要求是爲本地時區騰出時間。 – arora

+0

你可以使用TimeZone.getDefault()它給你默認的時區和日曆實例默認情況下挑選默認時區 – Aditi

回答

0

你試過以下:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+05:30")); //If you are seeking local time of India 

或者

date.setTimeZone(TimeZone.getTimeZone("GMT+05:30")); 

String localTime = date.format(currentLocalTime); //To get current local time 
+1

我需要時區根據用戶的位置變化。 Android文檔建議爲此使用TimeZone.getDefault(),但它不適用於我的情況。 – arora

+0

你可以試試long currentTime = new Date()。getTime();它會給設備的時間。因此,用戶在任何區域的時間是 – deosha

+0

我完全無法獲取連接到Android Studio的任何設備上的本地時區並使用TimeZone.getDefault()。我總是得到GMT時間,gmt Offset爲0.任何人都知道如何在api 22和更高版本中獲得真正的時區? – KuriaNdungu