часовой пояс CEST btw
Часовой пояс имеет решающее значение. Для вывода в нужном часовом поясе:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"dd MMMM yyyy hha", Locale.ENGLISH);
String expires = "2018-08-13T06:37:31Z";
Instant inst = Instant.parse(expires);
System.out.println(inst.atZone(ZoneId.of("Europe/Warsaw")).format(formatter));
Thisотпечатки:
13 августа 2018 г. 08:00
Я использовал Европу / Варшаву в качестве часового пояса, пожалуйста, выберите свой любимый.Многие часовые пояса отображаются как CEST летом, но они не идентичны.Польша и другие страны Центральной Европы летом на 2 часа опережают UTC, поэтому время дается как 08AM
, когда строка истечения, которую мы проанализировали, сказала: 06:37
UTC (трейлинг Z
означает часовой пояс Зулуса или смещение нуля или простоUTC).
Я указал Locale.ENGLISH
, потому что AM и PM едва ли используются на других языках, кроме английского, но, опять же, вы должны сделать свой собственный выбор.
Строка, которую нужно проанализировать, придерживаетсяФормат ISO 8601 на определенный момент времени, поэтому я анализирую его в Java Instant
без указания форматера.Классы java.time
, современного Java-API даты и времени, анализируют ISO 8601 как значение по умолчанию.
Не используйте Date
и SimpleDateFormat
в 2018 году. Эти классы давно устарели и плохо разработаны,В частности, SimpleDateFormat
имеет репутацию проблемного.java.time
гораздо приятнее работать.
Ссылки