본문 바로가기
웹프로그래밍/Java

[JAVA] 날짜,Date 유효성, 정규식 체크

by Seras 2017. 7. 13.
반응형


[JAVA] 날짜,Date 유효성, 정규식 체크



String param = "2017-05-07 15:30"       // DB에서든 직접입력을 했던 String형으로 값을 받아오거나 읽는다고 하면

String param1 = "2017-06-10 17:30"       // 시작날짜와, 종료날자의 값을 이런식으로 들어오거나 읽는다면 물론 형식은 상관이 없다


현재는 yyyy-mm-dd HH:mm 으로 되어있지만 yyyy-mm-dd 로하든 yyyymmdd로 해도 상관이 없다! 왜냐면 바꿔주면 되기 때문에!!



SimpleDateFormat 날짜를 쉽게 Formatting이 가능한 클래스

SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");  //포멧팅을 위한!


Date startDate;   //Date형 변수 2개 선언!

Date endDate;


--------------------------------------------------------------------------------------------------------------------------------------------------

//날짜 형식 체크

   startDate = transFormat.parse(param);

   endDate= transFormat.parse((param1);


- 입력 String 값이 yyyy-MM-dd HH:mm 으로 들어왔기 때문에 다른 문자열이나 들어오게 되면 

- 익셉션 파스  나기 때문에 형식을 체크 할수 있다.


--------------------------------------------------------------------------------------------------------------------------------------------------


//날짜 유효성 체크

 String t = (String) map.get("job_from_dt");

 String t2 = (String) map.get("job_to_dt");

 Date d = transFormat.parse(t);

Date d2 = transFormat.parse(t2);

String f1 = transFormat.format(d);

String f2 = transFormat.format(d2);


//시작일이 종료일 유효성 체크

          int compare = d.compareTo(d2);


 if (!f1.equals(t.toString()) || !f2.equals(t2.toString()))  ||  compare > 0 {
System.out.println("입력날짜 값이 잘못 되었습니다");

}

- 년도는 상관없지만 예를들어 2020-13-45 70:70 라고 들어 왔을때 가정 해보자
- 13월?45일?70시?70분? 당연히 파스를 하게 되면 2021-02-15 등등등 으로 들어 갈 것이다
- 보통은 2017-12-31일 이라고 들어온다면 파스를 해도 2017-12-31이어야 하는것처럼
- 위는 다르게 값이 바뀌어 들어가기 때문에 입력값에 오류를 캐치 할수 있다
- if문에 compare은 시작일이 종료일보다 작을때 오류를 캐치할수 있다!



반응형

'웹프로그래밍 > Java' 카테고리의 다른 글

java.lang.NoSuchMethodError  (0) 2017.08.22
날짜 비교 compareTo  (0) 2017.08.22
[JAVA] eclipse hotswap (서버재구동없이)  (2) 2017.08.14
[JAVA] 년,월,일,시간,분으로 분리  (0) 2017.08.02
[Java] split,replaceAll 활용  (0) 2017.06.26