2016-08-21 3 views
0

Мне нужно получить местное время в моем приложении. Для этого я использую класс Calendar.Получить часовой пояс по умолчанию в android

Код:

Calendar calendar = Calendar.getInstance(); 

calendar.get(Calendar.HOUR_OF_DAY) показывает часы по Гринвичу.

Я проверил, что TimeZone.getDefault().getDisplayName() показывает GMT (что неверно) по умолчанию, но java.util.TimeZone.getDefault().getDisplayName() показывает правильный часовой пояс. Также calendar.getTime().toString() показывает правильное время.

Я не понимаю, почему существует такое расхождение между android.icu.util.TimeZone и java.util.TimeZone

Edit:

Недавно я обнаружил, что есть два календаря 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

Я не могу получить местный часовой пояс на любом устройстве, которое я подключаю к студии Androids, и использовать TimeZone.getDefault(). Я всегда получаю GMT время с gmt Offset равным 0. Кто-нибудь знает, как получить реальный часовой пояс в api 22 и выше? – KuriaNdungu

Смежные вопросы