DB에서 날짜 형식의 데이터를 불러왔을 때 그 데이터가 유효한 형식인지 검사하는 코드입니다.
예를 들어, '2021-02-18'의 경우 맞는 날짜이지만 '2021-02-30'은 없는 날짜이기 때문에 잘못된 데이터라 할 수 있습니다.
또한 형식을 yyyy-MM-dd로 맞추어 놓았는데 yyyyMMdd인 경우에도 만찬 가지로 잘못된 데이터가 될 수 있습니다.
package date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatCheck {
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = new Date();
String today = sdf.format(d);
System.out.println(today);
}
}
간단하게 "년도-월-일" 형태로 오늘의 날짜를 출력하는 코드를 작성했습니다.
SimpleDAteFormat으로 형식을 정해주고, Date를 Format에 맞춰 String에 담아 출력합니다.
이제 본격적으로 유효성 검사하는 코드를 작성해보겠습니다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
제일 중요한 SimpleDateFormat의 setLenient를 false로 둡니다.
이렇게 하면 잘못된 형식이 되었을 때 오류를 발생시킵니다. 저 한 줄이 전부라 할 수 있습니당 !
public void formatCheck(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
sdf.parse(date);
System.out.println("날짜 형식에 맞음 : "+date);
} catch(ParseException e) {
System.out.println("날짜 형식에 맞지 않음 : "+date);
e.printStackTrace();
}
}
검사하는 함수를 만들었습니다.
파라미터로 날짜를 받아 try-catch문으로 오류가 있으면 잡아냅니다.
메소드 타입을 void가 아닌 boolean으로 해서 try에는 return true, catch에서 오류가 잡혔을 땐 return false로 작성해도 좋을 것 같습니다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateFormatCheck {
public static void main(String[] args) {
// TODO Auto-generated method stub
String goodDate = "2021-02-18";
String wrongDate = "2021-12-32";
DateFormatCheck dateFormatCheck = new DateFormatCheck();
System.out.println("goodDate를 넣었을 때");
dateFormatCheck.formatCheck(goodDate);
System.out.println("wrongDate를 넣었을 때");
dateFormatCheck.formatCheck(wrongDate);
}
public void formatCheck(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
sdf.parse(date);
System.out.println("날짜 형식에 맞음 : "+date);
} catch(ParseException e) {
System.out.println("날짜 형식에 맞지 않음 : "+date);
e.printStackTrace();
}
}
}
전체 코드입니다.
goodDate에는 날짜 형식에 유효한 값, wrongDate에는 유효하지 않은 값을 넣어두고 각각 formatCheck함수에 넣어 실행시켜보았습니다.
이러한 결과를 얻을 수 있습니다.
formatCheck(wrongDate)를 실행했을 땐 catch문에서 ParseException을 찍어주는 것을 확인할 수 있습니다.
또한 wrongDate에 말도 안 되는 날짜가 아닌 우리가 지정한 형식(yyyy-MM-dd)이 아닌 경우에도 예외 처리하는 모습을 볼 수 있습니다.
'DEV > JAVA' 카테고리의 다른 글
[MacOS] JAVA 설치(Brew) (0) | 2022.07.28 |
---|---|
[JAVA] 문자열 치환 함수 replace() (0) | 2021.02.23 |