2016-08-21 77 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