を使用して日付を検証するメソッドを作成したいと考えています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);
}
しかし、たとえば、日付を検証すると、false2/09/2012
が返されます(実際にはtrueが返されるはずです)。理由がわかりません...誰かが私のコードの問題を見つけることができますか、それともこのロジックは完全に間違っていますか? この検証を行うためのより良い方法はありますか?