Java 프로그래밍에서는 다양한 형식의 날짜 문자열을 Date 객체로 변환해야 하는 경우가 자주 발생합니다. 이럴 때 SimpleDateFormat 클래스를 사용하면 손쉽게 처리할 수 있습니다.
변환할 문자열 준비하기
먼저 다음과 같은 두 개의 날짜 문자열이 있다고 가정해 보겠습니다.
String date1 = "11/10/2018"; String date2 = "15-Mar-2019 21:11:35";
첫 번째 문자열은 일/월/연도 형식이며, 두 번째 문자열은 일-월이름-연도 시:분:초 형식입니다. 문자열을 정확하게 변환하려면 각 형식에 맞는 패턴을 반드시 지정해 주어야 합니다.
SimpleDateFormat으로 변환하기
SimpleDateFormat 객체를 생성할 때 문자열의 실제 형식에 해당하는 패턴을 지정하고, parse() 메서드를 호출하면 문자열이 Date 객체로 변환됩니다.
SimpleDateFormat dateFormat1 = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat dateFormat2 = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
Date formattedDate1 = dateFormat1.parse(date1);
Date formattedDate2 = dateFormat2.parse(date2);주요 패턴 문자의 의미
- dd : 일(날짜), 2자리 표현
- MM : 월, 2자리 숫자 표현
- MMM : 월 이름 약어 (예: Mar)
- yyyy : 연도, 4자리 표현
- HH:mm:ss : 시:분:초 (24시간제)
전체 예제 코드
다음은 Java에서 문자열을 날짜로 변환하는 전체 프로그램입니다.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args)throws Exception {
String date1 ="11/10/2018";
String date2 = "15-Mar-2019 21:11:35";
SimpleDateFormat dateFormat1 = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat dateFormat2 = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
Date formattedDate1 = dateFormat1.parse(date1);
Date formattedDate2 = dateFormat2.parse(date2);
System.out.println(formattedDate1);
System.out.println(formattedDate2);
}
}실행 결과
Thu Oct 11 00:00:00 UTC 2018 Fri Mar 15 21:11:35 UTC 2019
참고 사항
parse() 메서드는 지정된 패턴과 문자열 형식이 일치하지 않으면 ParseException을 발생시킵니다. 따라서 위 예제처럼 throws Exception으로 선언하거나 try-catch 블록으로 예외 처리를 해주어야 합니다. 또한 패턴이 실제 문자열 형식과 다르면 잘못된 날짜가 파싱되거나 오류가 발생할 수 있으므로, 패턴 지정에 특히 주의해야 합니다.