Как получить TimeZone от мобильного телефона Android?

Я хочу получить часовую зону с Android-мобильного телефона при нажатии кнопки.

Вы пытались использовать TimeZone.getDefault() :

Большинство приложений будут использовать TimeZone.getDefault (), который возвращает TimeZone на основе часового пояса, в котором работает программа.

Ссылка: http://developer.android.com/reference/java/util/TimeZone.html

 TimeZone tz = TimeZone.getDefault(); System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID()); 

Вывод:

TimeZone GMT + 09: 30 Timezon id :: Австралия / Дарвин

Изменить: исправлено дело

TimeZone.getDefault()

Попробуйте этот код-

 Calendar cal = Calendar.getInstance(); TimeZone tz = cal.getTimeZone(); 

Он вернет пользовательский часовой пояс.

Согласно http://developer.android.com/reference/android/text/format/Time.html, вы должны использовать Time.getCurrentTimezone () для извлечения текущего часового пояса устройства.

Мне понадобилось смещение, которое не только включало дневное свечение, но и как числовое . Вот код, который я использовал, если кто-то ищет пример.

Я получаю ответ «3,5» (3:30), который я ожидаю в Тегеране, в Иране зимой и «4,5» (4:30) на лето.

Я также нуждался в нем в качестве строки, чтобы я мог отправить его на сервер, чтобы вам не понадобилась последняя строка.

Для получения правильного часового пояса:

 TimeZone tz = TimeZone.getDefault(); Date now = new Date(); //Import part : x.0 for double number double offsetFromUtc = tz.getOffset(now.getTime()) / 3600000.0; String m2tTimeZoneIs = Double.parseDouble(offsetFromUtc);