Отображение короткого имени часового пояса с помощью DateTimeFormatter

У меня есть следующее DateTimeFormatter.

DateTimeFormatter DATE_TIME_FORMATTER = 
    DateTimeFormatter.ofPattern("MM/dd/yyyy 'at' hh:mm:ss a zzzz");

Я использую его для форматирования ZonedDateTime следующим образом:

ZonedDateTime disableTime = Instant.now()
        .plus(Duration.ofDays(21))
        .atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours(-5)));
System.out.println(DATE_TIME_FORMATTER.format(disableTime));

Я хотел бы, чтобы это вывело отформатированную строку даты, как показано ниже:

09 / 16/2015 в 13:15:45 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Но что получается, так это:

16.09.2015 в 13:15:45 UTC-05: 00

Независимо от того, использую ли я z, zz, zzz или zzzz в шаблоне, он всегда будет выводиться в указанном выше формате.

Есть ли другой способ создания ZonedDateTime, который даст мне желаемый результат, или я делаю что-то не так в шаблоне?

Согласно DateTimeFormatter документации ], O следует использовать для отображения локализованного смещения зоны, например UTC-05:00, а z следует использовать для отображения названия часового пояса, например Eastern Daylight Time или EDT.

. ]

10
задан Andrew Mairose 26 August 2015 в 18:33
поделиться