我想将String
解析为Date
。问题是,如果我解析错误的日期,如"2009-02-40"
,我没有得到任何异常(没有反馈,我通过了错误的日期)而是我将Date
对象设置为"2009-01-01"
。< / p>
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
try {
Date result = df.parse("2009-02-40");
System.out.println(result);
} catch (ParseException e) {
e.printStackTrace();
}
当我像上面这样传递错误的Date
时,如何获得异常?
答案 0 :(得分:1)
你想在你的编队上打电话给setLenient(false)
。解析发生时会导致“严格”检查。默认情况下,“lenient”是“true;然后使用一些启发式方法将”垃圾进入“转化为任何东西。
可能不是世界上最好的设计;但这就是它的工作原理。
答案 1 :(得分:1)
请尝试以下代码:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
df.setLenient(false); //note the change here
try {
Date result = df.parse("2009-02-40");
System.out.println(result);
} catch (ParseException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
df.parse(&#34; 2009-02-40&#34);如果无法解析指定字符串的开头,则抛出ParseException。
要进行严格的解析,请使用 df.setLenient(false);