목차
자바 날짜의 타당성・존재 체크 Calendar.setLenient()
자바で날짜의 유효성 및 존재 확인하는 샘플 프로그램입니다.
지정된 날짜 문자열(yyyy/MM/dd 또는 yyyy-MM-dd)이 달력에 있는지 확인합니다.
java.text.DateFormat수업setLenient()에 false를 지정하면 날짜 분석을 엄격하게 수행할 수 있습니다. (※DateFormat 클래스는 내부적으로는java.util.Calendar 클래스의 setLenient()전화합니다. )
부정한 일자나, 존재하지 않는 일자로 parse() 메소드를 호출하면(자), ParseException가 발생하는 것을 이용한 체크 방법이 됩니다.
샘플 프로그램
/**
* 日付の妥当性チェックを行います。
* 指定した日付文字列(yyyy/MM/dd or yyyy-MM-dd)が
* カレンダーに存在するかどうかを返します。
* @param strDate チェック対象の文字列
* @return 存在する日付の場合true
*/
public static boolean checkDate(String strDate) {
if (strDate == null || strDate.length() != 10) {
throw new IllegalArgumentException(
"引数の文字列["+ strDate +"]" +
"は不正です。");
}
strDate = strDate.replace('-', '/');
DateFormat format = DateFormat.getDateInstance();
// 日付/時刻解析を厳密に行うかどうかを設定する。
format.setLenient(false);
try {
format.parse(strDate);
return true;
} catch (Exception e) {
return false;
}
}
실행 결과
◆실행예
public static void main(String[] args) { System.out.println(checkDate("2007-01-01")); System.out.println(checkDate("2007/02/31")); System.out.println(checkDate("aaaa/02/31)
◆출력 결과
true false false
