Как получить UTC смещение в секундах в android
Я пытаюсь получить смещение UTC в секундах в android. Поскольку эмулятор продолжает возвращать 0, я не могу сказать, правильно ли я делаю это или нет.
Calendar c=Calendar.getInstance();
TimeZone tz=c.getTimeZone();
int offsetFromUtc=tz.getOffset(0)/1000;
Когда я помещаю 0 в tz.getOffset, это означает, что я просто хочу, чтобы количество секунд от gmt.
Дайте мне знать, верно ли то, что Im делает. Благодаря
Ответы
Ответ 1
Сборы за Часовой пояс могут меняться в течение года, возможно, наиболее распространенной причиной является переход на летнее время. Вместо передачи 0 на TimeZone.getOffset() использует текущее время для получения текущего смещения, создает новую дату и получает ее значение времени:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime()) / 1000;
В эмуляторе по умолчанию установлен UTC, попробуйте проверить доступные временные интервалы для проверки. Также вы можете передать переключатель часового пояса, чтобы установить часовой пояс, проверить документацию для -timezone.
Ответ 2
Часовой пояс по умолчанию для эмулятора - GMT, что означает, что вы всегда получите смещение 0.
Ваш код выглядит хорошо (я не пробовал).
Попробуйте изменить часовой пояс своего эмулятора на что-то еще и проверьте свой код.
Взгляните на это сообщение: Ссылка