日付判定ってよくある話だと思うのだけれど、
よくわからないところで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; } }