개발새발 방이일지

[JAVA] 날짜 형식 설정하기 SimpleDateFormat 본문

개발일지/Java

[JAVA] 날짜 형식 설정하기 SimpleDateFormat

방이 2020. 7. 29. 14:41

SQL에서는 날짜 형식을 설정할 때 TO_CHAR(SYSDATE, 'YYYYMMDD') 이런식으로 설정하곤 한다. 날짜 형식을 DB에서 처리하면 편하긴 하지만 자바단에서도 처리해야할 때가 분명 있다. 그럴때 자바단에서는 날짜 형식을 어떻게 지정해줄까?

바로 SimpleDateFormat 함수를 사용하는 것이다.

1. SimpleDateFormat 이란?

SimpleDateFormat이란 날짜, 시분초 등을 원하는 형식으로 설정해주는 함수이다. DB에서 TO_CHAR로 SYSDATE의 형식을 지정할 때 'YYYYMMDD'를 많이 쓴다. 출력은 예를들어 현재 글쓰는 시점으로 치면 '20200729' 이런식으로 출력된다. 저 형식을 'YYYY-MM-DD' 이렇게 쓰면 당연히 '2020-07-29' 이렇게 출력이 된다. SimpleDateFormat 도 이같이 YYYY나 MM 등 이런 옵션을 사용한다. 조금 다른 부분이 있으므로 2번에 옵션 설명을 바로 추가한다.

2. SimpleDateFormat 옵션

옵션 설명 비고
y 년도 Ex) yyyy = 2020
M 월(1~12) Ex) MM = 07
D 해당 년도의 몇 번째 일(1~366) Ex) D = 365
d 해당 월의 몇 번째 일(1~31) Ex) dd = 29
F 해당 월의 몇 번째 요일(1~5) Ex) F = 5 이달의 5번째 수요일 입니다.
E 요일(월~일)  
a 오전/오후(AM/PM)  
H 시간(0~23) Ex) HH = 14
h 시간(1~12) Ex) hh = 02
k 시간(1~24) Ex) k = 14
K 시간(0~11)  
m 분(0~59) Ex) mm = 21
s 초(0~59)  
G 기원전/후(BC/AD) Ex) G = AD

...등등 더 있지만 기본적으로 많이 쓰이는 것들만 적어보았다. 추가적인 부분은 검색하거나 JAVA에서 SimpleDateFormat 함수 위에 마우스 커서를 가져다 대면 영어이지만 설명이 잘 나와있다.

3. 활용 예시

/* 
* main 함수는 제외하고 SimpleDateFormat 만 적어보겠다.
* 참고로 헤더에 import java.text.SimpleDateFormat; 임포트 해주는거 잊지말기.
*/

Date today = new Date();	// 오늘 날짜

// 출력
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf1.format(today));	// 2020-07-29 14:29:13

SimpleDateFormat sdf2 = new SimpleDateFormat("오늘은 yyyy년 MM월 dd일 E요일 a hh시 mm분 입니다.");
System.out.println(sdf2.format(today));	// 오늘은 2020년 07월 29일 Wed요일 오후 2시 25분 입니다.

// 참고로 요일은 Locale.KOREAN을 붙여줘야 위처럼 Wed요일로 안나오고 수요일 이렇게 나온다.
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd E요일", Locale.KOREAN);
System.out.println(sdf3.format(today)); // 2020-07-29 수요일

주석에도 적어뒀지만 혹여나 못볼까봐 한번 더 적어둔다. 

E요일 같은 경우 꼭 뒤에 Loacle.KOREAN을 붙여줘야지 영어가 아니라 한글로 요일이 잘 표시된다. 

※ 열심히 공부해 나가는 과정이며 제가 참고하기 위해 만든 스토리이기 때문에 틀린 부분이 있을 수도 있습니다. 만약 틀린 부분이 있다면 댓글 부탁드립니다.

Comments