[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 |