如何将UTC偏移量dateformat字符串解析为以|分隔的结果日期 符号

Ang*_*ely 3 java android datetime-format java-time java-date

我有一个非常特殊的问题,我想在哪里解析"2019-12-25T17:00:00-05:00" ,以便它可以给我结果DEC 12 | Thursday | 5:00pm

我通过使用DateTimeFormatter和尝试了以下代码LocalDate

DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssz", Locale.US);
                DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM d | E | hh:mm a", Locale.US);
                LocalDate date = LocalDate.parse("2019-12-25T17:00:00-05:00", inputFormatter);
                String formattedDate = outputFormatter.format(date);
                contentTextView.setText(formattedDate);
Run Code Online (Sandbox Code Playgroud)

但是它崩溃了 DateTimeParseException: Text '2019-12-25T17:00:00-05:00' could not be parsed at index 19

知道为什么会崩溃以及我的输出是否可以提供预期的结果吗?谢谢!

Dea*_*ool 8

您的String 2019-12-25T17:00:00-05:00表示UTC带有偏移UTC offset的时区,因此OffsetDateTime用于解析该字符串

OffsetDateTime odt = OffsetDateTime.parse("2019-12-25T17:00:00-05:00");

System.out.println(odt.format(DateTimeFormatter.ofPattern("MMM d | E | hh:mm a", Locale.US)));
Run Code Online (Sandbox Code Playgroud)

如果您想设置特定的时区,可以使用atZoneSameInstant传递ZoneIdeaxmple

ZoneId zone = ZoneId.of("America/Chicago");
ZonedDateTime zdt = odt.atZoneSameInstant(zone);
Run Code Online (Sandbox Code Playgroud)

  • 只需使用MMM,它就可以了,谢谢! (2认同)