使用新的Java 8 DateTimeFormatter进行严格的日期解析
我有一个简单的问题:我想严格地解析格式的Java字符串,所以这是一个有效的日期,但不是。假设这些是正常公历的 AD 日期。"yyyyMMdd"
"19800229"
"19820229"
我正在尝试使用JDK 8中的新软件包来解决这个问题,但它被证明比预期的要复杂得多。我目前的代码是:java.time
private static final DateTimeFormatter FORMAT = DateTimeFormatter
.ofPattern("yyyyMMdd").withChronology(IsoChronology.INSTANCE)
.withResolverStyle(STRICT);
public static LocalDate parse(String yyyyMMdd) {
return LocalDate.parse(yyyyMMdd, FORMAT);
}
但是,解析有效日期(如“19800228”)会产生对我来说难以理解的错误:
java.time.format.DateTimeParseException: 无法解析文本 '19820228': 无法从 TemporalAccessor 获取 LocalDate: {MonthOfYear=2, DayOfMonth=28, YearOfEra=1982},java.time.format.Parsed 类型的 ISO
我如何用来解决我的简单用例?java.time.format.DateTimeFormatter