我有一个java代码,它以特定格式输入日期。
static Date parseDate(String userInput){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = format.parse(userInput);
System.out.println(date);
}catch(ParseException pe){
date=null;
System.out.println("Not a valid date");
}
return date;
}
现在我输入2015-13-11 89:90:90
,这是一个无效的日期。但它返回Thu Jan 14 18:31:30 IST 2016
作为日期。为什么会这样?如何让它作为日期返回null?
答案 0 :(得分:16)
从javadocs一眼就可以看出,它似乎使用了lenient
解析模式,它接受格式错误的输入:
添加此行
format.setLenient(false);
初始化DateFormat对象后,似乎可以修复它。
答案 1 :(得分:4)
我将尝试解释为什么这种情况。
日期不同,因为超出其字段最大值的值会累积到下一个更大的字段中。
我不确定它的解决顺序,但这是一般情况:
鉴于2015-13-11 89:90:90
这让我们留下2016-01-14 18:31:30。