프로그래밍 언어/자바 & 코틀린

[java] 유효한 날짜인지 체크하는 방법(Validation Date)

희랍인 조르바 2018. 11. 28. 20:52
validationDate

java에서 유효한 날짜인지 체크하는 방법

아무 날짜가 스트링 형태로 입력값이 들어올 경우, 에러 메세지를 띄워주어야 하는 기능을 만들어야 했다. 우리 회사는 java7을 이용하기 때문에 java8에서 향상됐다는 datetime은 사용하지 못한다.


그래서 다른 방법을 찾았다. dateFormat의 setLenient를 사용하는 것이다. 여기서 Lenient의 사전적 의미는 '허술하다, 생각한 것보다 판단이나 처벌이 약하다’라는 뜻이다. java doc을 참조하면 아래처럼 설명하고 있다.

setLenient(boolean lenient)
Specify whether or not date/time parsing is to be lenient.

날짜가 파싱될 때 허술하게 할 지 말지를 설정해주는 것으로 보인다. 그래서 setLenient(false)를 한다는 건 엄격하게 따지겠다는 의미 같다.


/** 입력 date가 yyyy-MM-dd 형태로 들어옴 */
public  boolean  validationDate(String checkDate){

   try{
         SimpleDateFormat  dateFormat = new  SimpleDateFormat("yyyy-MM-dd");
         dateFormat.setLenient(false);
         dateFormat.parse(checkDate);
         return  true;
       }catch (ParseException  e){
         return  false;
       }

}

이렇게 체크할 경우, 유효한 날짜가 아니면 ParseException을 던질 것이고, 유효한 날짜라면 true로 반환할 것이다.


아래는 테스트 해본 코드이다.


public  class  ValidateDate {

   public  static  void  main(String[] args){

     ValidateDate  validateDate = new  ValidateDate();
     System.out.println(validateDate.validationDate("2018-12-32"));

   }

   public  boolean  validationDate(String  checkDate){

     try{
          SimpleDateFormat  dateFormat = new  SimpleDateFormat("yyyy-MM-dd");

          dateFormat.setLenient(false);
          dateFormat.parse(checkDate);
          return  true;
       }catch (ParseException  e){
         return  false;
       }

  }
}
// 결과 값: false

날짜 유효성 체크 끝~!