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

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

Ответ 1

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

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

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

Ответ 2

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

Вывод:

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

Ответ 4

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

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

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

Ответ 5

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

Я получаю ответ "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);

Ответ 6

TimeZone timeZone = TimeZone.getDefault(); 
timeZone.getID();

Он будет печататься как

Asia/Kolkata

Ответ 7

Простейшее решение с простым форматом даты: SimpleDateFormat ( "ZZZZZ" ):

 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
                Locale.getDefault());
        Date currentLocalTime = calendar.getTime();

        DateFormat date = new SimpleDateFormat("ZZZZZ",Locale.getDefault());
        String localTime = date.format(currentLocalTime);
        System.out.println(localTime+ "  TimeZone   " );

== > Вывод: +05: 30

Ответ 9

Для устройств с API 26 и выше вы можете получить его следующим образом:

ZonedDateTime.now().getZone().toString();

Ответ 10

На моем устройстве TimeZone.getDefault() всегда возвращается часовой пояс UTC.

Мне нужно сделать это, чтобы настроить пользовательский часовой пояс:

TimeZone.setDefault(null)
val tz = TimeZone.getDefault()

Он вернет выбранный вами часовой пояс.