我正在尝试进行日期验证。当用户输入类似于:2552533 Jan 2012 1340001的内容时,将其解析为:Wed Sep 03 07:41:00 EDT 9000.这是我的代码:
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy kkmm");
...
Date test;
try {
test = sdf.parse(dateString);
} catch (Exception e) {
...
这里dateString
是一个字符串,我正在尝试解析为日期。如果字符串不是有效日期,例如:552533 Jan 2012 1340001,我希望抛出一个错误。我做错了什么?
答案 0 :(得分:4)
尝试此操作(在解析实际日期之前):
sdf.setLenient(false);
答案 1 :(得分:2)
SimpleDateFormat.parse
在出现错误时不会抛出任何异常,它会返回null
。来自javadoc:
Returns:
A Date parsed from the string. In case of error, returns null.
Throws:
NullPointerException - if text or pos is null.
所以你可以这样做:
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy kkmm");
...
Date test = sdf.parse(dateString);
if(test == null) {
// there was an error
}
答案 2 :(得分:0)