日付の妥当性チェック

日付の妥当性をチェックします。 Calendar#setLenient()にfalseをセットしてDateオブジェクトの生成を試みると、ありえないCalendarインスタンスは例外を投げます。 例:2004年02月29日はOK 例:2005年02月29日は例外 [java]/* * 与えられた日付が妥当であるかをチェックします。 * author R.NAKAYA * @param strDate 8桁の生年月日 (1981年4月15日→19810415) * @return true:妥当である false:あり得ない日付 / public static boolean isNotDateLenient(String strDate) { // 生年月日が8桁でない場合はエラー if (8 != strDate.length()) { return false; }

// 年・月・日の整数に変換 int year = Integer.parseInt(strDate.substring(0, 4)); int month = Integer.parseInt(strDate.substring(4, 6)) - 1; int day = Integer.parseInt(strDate.substring(6, strDate.length()));

Calendar cal = Calendar.getInstance(); cal.setLenient(false); // 厳密なチェックを行う cal.set(year, month, day); // 日付を指定

try { // Dateオブジェクトを生成してみて、例外が発生するかを試す Date date = cal.getTime(); } catch (IllegalArgumentException e) { return false; } return true; } }[/java]たいがい、このようなチェックはWebではJavaScriptで行うのですが、携帯サイトなどのチェック用に。