Конвертировать GMT+ дату в локальную на Android

Мне нужно конвертировать дату, например, пн 14 ноября 13:36:01 GMT+03:00 2016 в местное. Так должно быть 16:36:01

Date serverDate; // Mon Nov 14 13:36:01 GMT+03:00 2016

SimpleDateFormat dateFormat = new SimpleDateFOrmat("hh:mm:ss");
String result = dateFormat.formatDate(serverDate);

Результат не видит GMT +03: 00 и дает мне неправильное время (13:36 вместо 16:36).

1 ответ

Решение

Поэтому мне просто нужно было создать форматтер без ZZZZZ и установить часовой пояс в GMT.

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault());
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    final Date localDate = simpleDateFormat.parse("2016-11-11T09:48:24-05:00");

    SimpleDateFormat dateFormat = new SimpleDateFOrmat("hh:mm:ss");
    String result = dateFormat.formatDate(localDate); //12:48:24

После этого кода время переменной localDate будет 12:48:24 (в случае моего GMT +03:00).

Другие вопросы по тегам