Develop with pleasure!

福岡でCloudとかBlockchainとか。

SimpleDateFormatで日付の妥当性チェック

SimpleDateFormatで日付の妥当性チェックをしようと

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); 
format.parse("20080132");

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

format.setLenient(false);
format.parse("20080132");

とすれば、実在しない日付なので、ParseExceptionが発生する。