我想創建一個方法來使用SimpleDateFormat
驗證日期。使用SimpleDateFormat驗證日期
如果日期是有效的(例如02/09/2012
或2/09/2012
或02/9/2012
),此方法應該返回真正。
但是,如果日期的格式錯誤(例如02/09/201X
)或邏輯錯誤(例如32/09/2012
),此方法應該返回假。
我嘗試寫這個方法是這樣的:
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
,它返回假(實際上它應該返回真)。我不知道爲什麼...任何人都可以找到我的代碼有什麼問題,或者這個邏輯是完全錯誤的?有沒有更好的方法來做這個驗證?
您應該考慮使用java.xml.DatatypeFactory來解析日期字符串。它速度快,支持大量的標準格式。 – Zagrev