프로그래밍/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하는 부분도 잊지말자.

반응형