提问人:erotsppa 提问时间:4/18/2023 最后编辑:Anonymouserotsppa 更新时间:4/18/2023 访问量:71
无法解析自定义 Java 日期:是否可以将其设置为默认年份?
Unable to parse custom Java date: Can I set it to a default year?
问:
DateTimeFormatter formatter2 = new DateTimeFormatterBuilder()
.appendPattern("h:mm a z - d MMMM")
.toFormatter()
.withLocale(Locale.US);
String test = "7:00 PM EST - 14 April";
LocalDateTime date2 = LocalDateTime.parse(test, formatter2);
它引发此异常
java.time.format.DateTimeParseException:文本“美国东部时间晚上 7:00 - 4 月 14 日” 无法分析:无法从中获取 LocalDateTime TemporalAccessor:{DayOfMonth=14, MonthOfYear=4},ISO,America/New_York 解析为 19:00 类型为 java.time.format.Parsed
但是你可以看到它正确地解析了所有组件。问题出在哪里?
答:
3赞
MC Emperor
4/18/2023
#1
问题是 a 的构造需要一年的时间才能存在,但你的时间字符串不需要。LocalDateTime
如果缺少某些元素,则可以使用 指示 to 默认为某个值,使用 。DateTimeFormatterBuilder
parseDefaulting
DateTimeFormatter formatter2 = new DateTimeFormatterBuilder()
.parseDefaulting(ChronoField.YEAR, 2023)
.appendPattern("h:mm a z - d MMMM")
.toFormatter()
.withLocale(Locale.US);
评论
0赞
MC Emperor
4/18/2023
对不起,我的错误。它应该是 .ChronoField
评论