以下のプログラムでは「2009/3/33」というありえない入力値をパースしようとしているので、エラーが出ることを期待する。しかし実際は繰り上がって「2009/4/2」という日付オブジェクトが生成されてしまう。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); Date date = simpleDateFormat.parse("2009/3/33"); System.out.println(date);
こういう時どうするかというと、パースする前に以下のように設定しておくことでパース処理が厳密になり、エラーが発生するようになる。
simpleDateFormat.setLenient(false);
仕事中に後輩に質問されたものの、久々だったのでなかなか思い出せなかった。「Lenient」は馴染みがない単語やから覚えにくいっす。