我有以下代码:

  DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
  dateFormat.setLenient(false);
  Date date = dateFormat.parse("10/20/20128");

而且我希望dateFormat.parse调用会引发ParseException,因为我提供的年份是5个字符长,而不是像我定义的格式那样是4个字符。但是出于某种原因,即使将lenient设置为false,此调用也会返回Date对象10/20/20128。

这是为什么?这对我来说没有多大意义。还有其他设置可以使其更加严格吗?

最佳答案

20128是有效的一年,我想Java希望世界能活那么久。



Reference.

如果您想验证日期是否在限制范围内,则可以定义一个日期并检查-

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date maxDate = sdf.parse("01/01/2099");  // This is the limit

if(someDate.after(maxDate)){
    System.out.println("Invalid date");
}

10-07 17:12