参考サイトど忘れしました

/** 日付チェック
 * 文字列(YYYYMMDD)が日付として有効かチェックする。
 * @param  String  入力文字列 YYYYMMDD
 * @return boolean  有効 true 無効 false 
 */
public static boolean checkDate(String myDate) {
	//入力文字列が8桁以外の場合エラー

	if (myDate.length() != 8) {
		return false;
	}
	//半角数字?
	for (int i = 0; i < myDate.length(); i++) {
		char charData = myDate.charAt(i);
		if ((charData < '0') || (charData > '9')) {
			return false;
		}
	}

	int intYear;
	int intMonth;
	int intDay;

	if (myDate.length() > 3) {
		intYear = java.lang.Integer.parseInt(myDate.substring(0, 4));
	} else {
		intYear = 0;
	}
	if (myDate.length() > 5) {
		intMonth = java.lang.Integer.parseInt(myDate.substring(4, 6));
	} else {
		intMonth = 0;
	}
	if (myDate.length() == 8) {
		intDay = java.lang.Integer.parseInt(myDate.substring(6, 8));
	} else {
		intDay = 0;
	}
	//カレンダーインスタンス
	Calendar cal = Calendar.getInstance();
	//厳密性をセット
	cal.setLenient(false);
	cal.set(intYear, intMonth - 1, intDay);

	try {
		//こういうやり方はよくないが。。。
		java.util.Date ud = cal.getTime();
	} catch (IllegalArgumentException iae) {
		return false;
	}

	return true;

}
最終更新:2009年06月13日 11:01