【发布时间】:2021-12-06 12:06:53
【问题描述】:
我想通过使用 DateTimeFormatter 解析字符串来创建一个 LocalDate 实例,我注意到如果我解析一个字符串,其中日期大于该月的天数,那么智能解析器就会解决它以最后一天为例。 (我希望抛出异常)
DateTimeFormatter smartFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate.parse("20000431", smartFormatter);
解决到 2000 年 4 月 30 日,所以我添加了以下内容
DateTimeFormatter strictFormatter = DateTimeFormatter.ofPattern("yyyyMMdd").withResolverStyle(ResolverStyle.STRICT);
LocalDate.parse("20000431", strictFormatter);
正如预期的那样,现在这会引发异常。但是,我注意到它也会在 4 月 30 日引发异常,这显然是有效的。下面有什么问题?
DateTimeFormatter strictFormatter = DateTimeFormatter.ofPattern("yyyyMMdd").withResolverStyle(ResolverStyle.STRICT);
LocalDate.parse("20000430", strictFormatter);
【问题讨论】: