Преобразование строки даты в формат UTC

У меня есть строка даты, которую я возвращаю из API. Дата в этом формате.

2018-10-15T17:52:00Z

Теперь я хочу преобразовать эту строку в формат даты UTC. Это код, который я использую для этого,

private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";


 try {
        String expiryDateString = "2018-10-15T17:52:00Z";
        final SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT,Locale.US);
        formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
        return formatter.parse(expiryDateString);
     } catch (final ParseException e) {
            return null;
     }

Этот метод возвращает дату как

Пн, 15 октября, 13:52:00 по восточному поясному времени 2018 г.

Я не могу использовать функции Java 8. есть ли способ преобразовать строку в дату и время UTC без использования методов Java 8?


person Easy Coder    schedule 15.10.2018    source источник
comment
Посетите stackoverflow.com/questions/4525850/   -  person Chamila Lakmal    schedule 15.10.2018
comment
Я хочу преобразовать эту строку в формат даты UTC, который является форматом даты UTC. Z означает часовой пояс UTC.   -  person Andreas    schedule 15.10.2018
comment
@Andreas, как преобразовать эту строку даты и времени UTC в правильную дату UTC?   -  person Easy Coder    schedule 15.10.2018
comment
Ваш код уже делает это, поскольку java.util.Date всегда является датой UTC. Часовой пояс EDT, который вы видите, применяется, когда значение даты UTC отформатировано для отображения. Это ваша логика отображения ошибочна, а не код в вопросе.   -  person Andreas    schedule 15.10.2018
comment
Определите методы Java 8, пожалуйста. Даже на низких уровнях API вы можете использовать java.time, современный API даты и времени Java, впервые появившийся в Java 8. Он был перенесен, а затем адаптирован для Android. Вам нужна библиотека ThreeTenABP, см. Как использовать ThreeTenABP в проекте Android. . И вы должны хотеть этого, потому что класс SimpleDateFormat, который вы использовали, не только давно устарел, но и, как известно, доставляет много хлопот. С современным API гораздо приятнее работать.   -  person Ole V.V.    schedule 15.10.2018


Ответы (1)


Пн, 15 октября, 13:52:00 по восточному поясному времени 2018 г.

является результатом date.toString() - класса Date.

Дата анализируется правильно, просто отображается по-другому. Если вы хотите проверить правильность синтаксического анализа, вы можете проверить это следующим образом:

String expiryDateString = "2018-10-15T17:52:00Z";
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(expiryDateString);
assertEquals(expiryDateString, formatter.format(date));
person Adina Rolea    schedule 15.10.2018