SimpleDateFormatで日付の妥当性チェックをしようと
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); format.parse("20080132");
とするが、日付が英字だったりするとParseExceptionが発生するが、実在しない日付を設定してもParseExceptionは発生しない。SimpleDateFormatじゃあ妥当性のチェックまではできないのかと思ったらちゃんと設定があった。
setLenientという日付の厳密な解析を行うかどうかを設定できるメソッドがある。デフォルト値はtrue。trueだったら厳密の解析が行われた結果じないかと思うが、この設定falseの場合に厳密な解析を行ってくれるとのこと。紛らわしい…。なので、
format.setLenient(false); format.parse("20080132");
とすれば、実在しない日付なので、ParseExceptionが発生する。