【发布时间】:2012-10-11 14:42:15
【问题描述】:
我想创建一个使用SimpleDateFormat 来验证日期的方法。
如果日期有效(例如02/09/2012 或2/09/2012 或02/9/2012),此方法应返回true。
但是如果日期的格式错误(例如02/09/201X)或逻辑错误(例如32/09/2012),这个方法应该返回false。
我尝试这样写这个方法:
private boolean isValidDate(String date) {
DateFormat df1 = new SimpleDateFormat("dd-MM-yyyy");
DateFormat df2 = new SimpleDateFormat("d-MM-yyyy");
DateFormat df3 = new SimpleDateFormat("dd-M-yyyy");
Date d = null;
String s = null;
try {
d = df1.parse(date);
}catch (Exception e1) {
try{
d = df2.parse(date);
}catch (Exception e2) {
try {
d= df3.parse(date);
}catch (Exception e3) {
return false;
}
s = df3.format(d);
return date.equals(s);
}
s = df2.format(d);
return date.equals(s);
}
s = df1.format(d);
return date.equals(s);
}
但如果我验证一个日期,例如 2/09/2012,它会返回 false(实际上它应该返回 true)。我不知道为什么......谁能找到我的代码有什么问题,或者这个逻辑完全错误?有没有更好的方法来做这个验证?
【问题讨论】:
-
您应该考虑使用 java.xml.DatatypeFactory 来解析日期字符串。它速度快,支持大量标准格式。
标签: java validation date simpledateformat