Java:如何严格解析日期?java.time

2022-09-02 02:43:28

SimpleDateFormat是一个非常类型的解析器,它滚动结果日期而不是抛出错误。如何在没有正则表达式等的情况下严格解析日期?

fmt = new SimpleDateFormat("dd.MM.yyyy")
fmt.parse("10.11.2012")   // it works
fmt.parse("10.1150.2012") // it works but it's unwanted

答案 1

fmt.setLenient(false);就是你要找的。


答案 2

java.time

您还可以在 Java 8 及更高版本中使用 java.time 包教程)。它的解析严格检查日期值。

例如:

String strDate = "20091504";
TemporalAccessor ta = DateTimeFormatter.ofPattern("yyyyMMdd").parse(strDate);

直接给予:

Exception in thread "main" java.time.format.DateTimeParseException:
Text '20091504' could not be parsed:
Invalid value for MonthOfYear (valid values 1 - 12): 15