gpt4 book ai didi

java - DateTimeParseException 与 LocalDateTime : Unable to obtain LocalDateTime from TemporalAccessor

转载 作者:行者123 更新时间:2023-11-30 06:51:38 26 4
gpt4 key购买 nike

这是我的代码:

private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd HH:mm:ss");

LocalDateTime timeStamp = LocalDateTime.parse(string, formatter);

这会导致以下异常:

java.time.format.DateTimeParseException: Text 'Oct 10 13:10:01' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MonthOfYear=10, DayOfMonth=10},ISO resolved to 13:10:01 of type java.time.format.Parsed

使用 Java 1.8.0_31。

我确实环顾四周,发现了许多类似的问题,但没有一个与这个问题完全匹配,并且那里提供的解决方案不适用于此处:

Here同样问题的原因是使用没有时间部分的 LocalDateTime。正如您从预期中看到的那样,这里不是这种情况。

我没有像 this 那样使用基于周的年份示例。

最后不像here我正在使用 LocalDateTime,所以时区应该不是问题。但因为它应该是 bug in DateTimeFormatter我尝试将格式化程序作为“formatter.withZone(ZoneId.systemDefault())”(建议的解决方法)传递,这导致了相同的异常。

最佳答案

LocalDateTime 需要一年 - 否则格式化程序无法决定 10 月 10 日应该在 2016 年还是公元前 452 年。

您可以向 DateTimeFormatter 添加默认行为,例如:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("MMM dd HH:mm:ss")
.parseDefaulting(ChronoField.YEAR_OF_ERA, 2016)
.toFormatter(Locale.ENGLISH);

或者使默认为当前年份更加灵活:

        .parseDefaulting(ChronoField.YEAR_OF_ERA, Year.now().getValue())

关于java - DateTimeParseException 与 LocalDateTime : Unable to obtain LocalDateTime from TemporalAccessor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39978897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com