Как отформатировать ZonedDateTime в yyyy-MM-ddZ - PullRequest
0 голосов
/ 14 февраля 2020

Мне нужно включить ZonedDateTime в XML Тип данных даты в формате yyyy-MM-ddZ. Например: 2020-02-14Z. Я пытаюсь использовать DateTimeFormatter.ofPattern("yyyy-MM-ddZ"), но вывод: 2020-02-14+0000. Какой шаблон DateTimeFormatter я должен использовать, чтобы получить желаемый результат?

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

DateTimeFormatter.ISO_OFFSET_DATE

Использовать встроенный DateTimeFormatter.ISO_OFFSET_DATE.

    ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("America/Fortaleza"));
    String dateForXml = dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE);
    System.out.println(dateForXml);

Когда я только что запустил этот фрагмент, вывод был:

2020-02-14-03: 00

Если вы хотите строку в UT C с завершающим Z, используйте ZoneOffset.UTC:

    ZonedDateTime dateTime = ZonedDateTime.now(ZoneOffset.UTC);

2020-02-14Z

Если у вас есть ZonedDateTime, которого нет в UT C, конвертируйте:

    ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("America/Fortaleza"));
    OffsetDateTime odt = dateTime.toOffsetDateTime()
            .withOffsetSameInstant(ZoneOffset.UTC);
    String dateForXml = odt.format(DateTimeFormatter.ISO_OFFSET_DATE);

2020- 02-14Z

0 голосов
/ 14 февраля 2020

Вы должны использовать DateTimeFormatter.ofPattern ("yyyy-MM-dd'Z '"). Вот что я получил:

LocalDate localDate = LocalDate.now();
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.of("EST5EDT"));
System.out.println("Not formatted:" + zonedDateTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'Z'");
System.out.println("Formatted:" + formatter.format(zonedDateTime));

Не отформатирован: 2020-02-14T00: 00-05: 00 [EST5EDT]

Отформатирован: 2020-02-14Z

...