[Java] 자바 날짜 포맷 변경법(SimpleDateFormat)
- Language/Java
- 2020. 11. 26.
DB를 가져올 때 날짜 포맷을 변경하여 처리할 수 있지만, 포맷을 변경하기 힘든 NoSQL DB 라든지 혹은 포맷을 변경하기 힘든 케이스의 경우 자바(Java)에서 지원하는 기능인 SimpleDateFormat을 사용하여 포맷을 변경할 수 있다.
SimpleDateFormat
날짜를 바꾸기 위해서는 java에 내장되어 있는 SimpleDateFormat을 활용하여 포맷을 변경한다. 라이브러리의 이름처럼 심플하게 데이트 형태로 포맷을 변경한다.
데이트포맷 옵션
포맷문자 |
날짜 및 시간 요소 |
표현 |
예시 |
G |
Era designator |
Text |
AD |
y |
Year |
Year |
1996; 96 |
Y |
Week year |
Year |
2009; 09 |
M |
Month in year (context sensitive) |
Month |
July; Jul; 07 |
L |
Month in year (standalone form) |
Month |
July; Jul; 07 |
w |
Week in year |
Number |
27 |
W |
Week in month |
Number |
2 |
D |
Day in year |
Number |
189 |
d |
Day in month |
Number |
10 |
F |
Day of week in month |
Number |
2 |
E |
Day name in week |
Text |
Tuesday; Tue |
u |
Day number of week (1 = Monday, ..., 7 = Sunday) |
Number |
1 |
a |
Am/pm marker |
Text |
PM |
H |
Hour in day (0-23) |
Number |
0 |
k |
Hour in day (1-24) |
Number |
24 |
K |
Hour in am/pm (0-11) |
Number |
0 |
h |
Hour in am/pm (1-12) |
Number |
12 |
m |
Minute in hour |
Number |
30 |
s |
Second in minute |
Number |
55 |
S |
Millisecond |
Number |
978 |
z |
Time zone |
General time zone |
Pacific Standard Time; PST; GMT-08:00 |
Z |
Time zone |
RFC 822 time zone |
-800 |
X |
Time zone |
ISO 8601 time zone |
-08; -0800; -08:00 |
위 표는 SimpleDateFormat에서 제공하는 값으로 위 내용들을 조합하여 내가 원하는 날짜 포맷을 생성할 수 있다.
14자리 숫자로 표현
아무래도 날짜 데이터를 가장 많이 표현하는 것 중에 하나가 숫자형으로 표현을 하는 것이다. 예를 들어 현재 포스팅을 쓰고 있는 현재 시점을 숫자로 표현하고 싶을 경우 20201126222052와 같이 날짜값 8자리 시간값 6자리를 합친 14자리의 숫자로 표시하는 경우이다.
이렇게 표현할 경우, long 형태로 값을 읽을 수 있고 내가 원하는 포맷으로 변경하기 쉬워지며 DB등에서 사용할 때 range를 지정하거나 정렬등을 할 때도 효과가 좋다.
import java.text.SimpleDateFormat;
import java.util.Date;
public class main {
public static void main(String[] args) {
Date now = new Date();
System.out.println("now => " + now);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
System.out.println("format => " + format.format(now));
}
}
내용 결과
now => Thu Nov 26 22:28:30 KST 2020
format => 20201126222830
다양한 문자형 날짜 포맷
import java.text.SimpleDateFormat;
import java.util.Date;
public class main {
public static void main(String[] args) {
Date now = new Date();
// 년월일만 표시
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
System.out.println(sdf1.format(now));
// 2020년 11월 26일과 같이 표시
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy년 MM월 dd일");
System.out.println(sdf2.format(now));
// 2020-11-26일과 같이 표시
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf3.format(now));
// AD 2020년 11월 26일 오후 10시 33분
SimpleDateFormat sdf4 = new SimpleDateFormat("G yyyy년 MM월 dd일 ahh시 mm분");
System.out.println(sdf4.format(now));
}
}
20201126
2020년 11월 26일
2020-11-26
AD 2020년 11월 26일 오후10시 33분
위 포맷 예제처럼 데이트포맷으로 무궁무진하게 날짜값을 조합하여 사용할 수 있다. 포맷 옵션등을 다양하게 해서 본인이 원하는 조합으로 날짜값을 만들면 충분하지만 보다 자세한 정보가 궁금할 경우 아래 참고자료를 봐서 해당 클래스에 대한 설명을 직접 보는 것이 좋을 것이다.
참고자료
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
'Language > Java' 카테고리의 다른 글
[Java] 자바로 지정한 폴더 및 하위 폴더 탐색(재귀적 함수) (0) | 2020.11.29 |
---|---|
[Java] 자바로 로또 번호 생성하기 (0) | 2020.11.26 |
[Java] 문자열 인코딩/디코딩 하기 (0) | 2020.11.17 |
[Java] Yaml, Yml 사용하기 (0) | 2020.11.16 |
[Java] Switch문 사용하기 (0) | 2020.11.16 |