我有以下代码:
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");
}