프로그래밍/JAVA 자바
Calendar 클래스 / 날짜 형식이 올바른지 판단하기
Heidong
2021. 7. 22. 02:08
반응형
public class DateUtil {
/**
* 날짜 형식이 올바른지 판단하여 반환
*
* @param date 문자열의 날짜
* @return 형식이 올바른지의 여부(true/false)
*/
public boolean isValidDate(String date) {
try {
if (date.length() != 8 && date.length() != 10) { //20210722 or 2021-07-22 이런식으로 8글자나 10글자인지 확인
return false;
}
String p = "^\\d{4}(\\.|\\-|\\/)?\\d{2}(\\.|\\-|\\/)?\\d{2}$"; //입력된 서식 체크
if (!date.matches(p)) { //매치 안되면 폴스
return false;
}
date = date.replaceAll("(\\-|\\.|\\/)", ""); //괄호나 점 같은거 없애고 다 붙여준다
int y = Integer.parseInt(date.substring(0, 4)); // 인덱스0부터 4까지 2021 << 자르기 그리고 정수로 변환
int m = Integer.parseInt(date.substring(4, 6));
int d = Integer.parseInt(date.substring(6, 8));
//System.out.println(y);
//System.out.println(m);
//System.out.println(d);
Calendar cal = Calendar.getInstance(); //캘린더 객체를 이용하기 위해 사용
cal.set(y, m - 1, d); // 날짜 설정하기 / 입력받은 date를 날짜로 설정해준다.
//cal.set이 제대로 되었다면 위에 y,m,d랑 같아야한다
int y1 = cal.get(Calendar.YEAR); //
int m1 = cal.get(Calendar.MONTH) + 1; //
int d1 = cal.get(Calendar.DATE); //
//System.out.println(y1);
//System.out.println(m1);
//System.out.println(d1);
if (y != y1 || m != m1 || d != d1) {
return false; //혹시 2021-02-35 이런식으로 잘못 입력했는지 확인하는 것이다.
}
} catch (Exception e) {
// 예외가 발생한 경우 false를 반환
return false;
}
return true;
}
Calendar를 import하는 부분도 잊지말자.
반응형