我有一个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;
}
Run Code Online (Sandbox Code Playgroud)
现在我输入的2015-13-11 89:90:90是无效日期.但它Thu Jan 14 18:31:30 IST 2016作为日期返回.为什么会这样?如何让它作为日期返回null?
Kyz*_*erp 16
从javadocs的一瞥,它似乎使用一种lenient解析模式,它接受格式不佳的输入:
添加此行
format.setLenient(false);
Run Code Online (Sandbox Code Playgroud)
初始化DateFormat对象后出现修复它.
我将尝试解释为什么会发生这种情况。
日期不同,因为超过其字段最大值的值将汇总到下一个更大的字段中。
我不确定它的解决顺序,但通常会发生以下情况:
发表于 2015-13-11 89:90:90
这给我们留下了 2016-01-14 18:31:30。