我有一个非常奇怪的问题,我试图解析"2019-12-25T17:00:00-05:00"
所以它应该给我结果DEC 12 | Thursday | 5:00pm
我使用DateTimeFormatterLocalDate尝试了以下代码

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);

但它崩溃了DateTimeParseException: Text '2019-12-25T17:00:00-05:00' could not be parsed at index 19
你知道为什么会崩溃吗?我的输出是否能达到预期的效果?
谢谢!

最佳答案

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

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)));

如果要设置特定时区,可以使用OffsetDateTime传递atZoneSameInstant给eaxmple
ZoneId zone = ZoneId.of("America/Chicago");
ZonedDateTime zdt = odt.atZoneSameInstant(zone);

10-08 03:03