白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

SimpleDateFormatが変?

日付判定ってよくある話だと思うのだけれど、
よくわからないところでtrueになったりする。
「2014032あ」が日付っていうのはさすがにどうなんだろうか。

ちなみに format.setLenient(false) は厳密チェックをするかどうかの設定。

public static void main(String... args) {

	System.out.println(isDate("20140301"));		// true
	System.out.println(isDate("20140340"));		// false
	System.out.println(isDate("2014030a"));		// false
	System.out.println(isDate("2014031a"));		// true
	System.out.println(isDate("2014032あ"));		// true

}

private static boolean isDate(String ymd) {

	SimpleDateFormat format = new SimpleDateFormat("yyyymmdd");
	format.setLenient(false);

	try {
		format.parse(ymd);
		return true;
	} catch (ParseException e) {
		return false;
	}
}