PHPに比べるとめんどくさいのね。
入力はString型とする。
入力日付フォーマットをチェックしつつ日付の妥当性も検証する。 なお内部的にはCalendarクラスのsetLenientメソッドを呼んでいるので引数がintの場合はCalendarクラスを利用したサンプル (そっちは世の中にありふれてる)を使うといいだろう。
String dateString = "2007-07-30";
SimpleDateFormat sdf = new
SimpleDateFormat("yyyy-MM-dd");
// 日付解析を厳密に行う(2/31などはNG)
sdf.setLenient(false);
try {
Date date = sdf.parse(dateString);
return sdf.format(date);
} catch (ParseException e) {
// 不正な日付のときはこのブロックに到達
}
JavaScriptとかASPでも同種の処理を作った覚えがある。 たしかフォーマットをかける前とかけた後を比較して同じだったら正常日付、違ったら不正日付とみなしていた。