Как преобразовать строку, содержащую время UTC, например 193526 (19:35:26), в местный часовой пояс?

Я пишу приложение о GPS, и мне нужно преобразовать строку времени UTC, полученную из формата NMEA, в местное время.

Строки имеют формат "193526", что соответствует 19:35:26 UTC(GMT).
Как преобразовать его в местное время, например "15:35:26 EDT"?


person user2874190    schedule 26.03.2015    source источник
comment
stackoverflow.com/questions/4216745/   -  person Code Whisperer    schedule 26.03.2015
comment
Работа с часовыми/часовыми поясами в java широко и неоднократно освещалась во многих местах. Вы пытались найти какие-либо ресурсы, которые могли бы ответить на ваш вопрос? Если да, покажите, что вы уже пробовали.   -  person tnw    schedule 26.03.2015


Ответы (1)


EDT TimeZone не существует в jdk. См. ответ здесь.

Вы можете сделать преобразование таким образом:

    SimpleDateFormat formatUTC = new SimpleDateFormat("HHmmss");
    formatUTC.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date = formatUTC.parse("193526");

    SimpleDateFormat formatEDT = new SimpleDateFormat("HH:mm:ss z");
    formatEDT.setTimeZone(TimeZone.getTimeZone("GMT-04:00"));
    System.out.println(formatEDT.format(date));

15:35:26 МСК-04:00

person T.Gounelle    schedule 26.03.2015
comment
Я бы использовал EST, но для перехода на летнее время - person njzk2; 26.05.2016