본문 바로가기

JAVA

SimpleDateFormat 사용법

자바에서 현재 시각이나 어떤 시각을 특정 형식으로 맞추어 출력하거나, String으로 변환해야할 때가 있다.

 

이럴 때 SimpleDateFormat이 사용되는데, 선언은 다음과 같이 하면 된다.

 

1. 표현식

SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy.MM.dd a H:mm:ss");

 여기에서 Locale 설정을 할 수 있는데, 지역 설정을 바꾸어 (DEFAULT) AM/PM을 오전/오후로 바꿀 수 있다.

SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy.MM.dd a H:mm:ss", Locale.KOREA);

선언문의 Argument에 사용하는 태그는 종류별로 다음과 같다.

Symbol 예시(/로 구분)
y 년도 2019, 19
M 월(1~12) 4, 4월, APR
D/d 일(1~366/1~31) 139/24, 24일
H/h 시간(0~23/1~12) 19/12
K/k 시간(1~24/0~11) 23/5
m 분(0~59) 23
s/S 초(0~59)/밀리초(0~999) 42/877
z Time Zone GMT+9:00
E 요일 화, 목
w/W 연중 주/월중 주 44/3
a 오전/오후 오전, AM/오후, PM

개인적으로 많이 쓰게 되는 것은 BOLD를 넣었다.

 

모든 symbol은 개수에 따라 자릿수가 맞춰진다(아마도?)

 

예를 들어, yyyy가 2019를 나타내면 yy는 19만 나타내게 된다.

그리고 4월 같은 한자리 수의 경우 M은 4, MM은 04로 표시된다.

 

2. String/Date/Calendar/Long Format으로 상호 변환

설명하기 쉽게 예를 들겠다.

String str = "20190923-09:29";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-h:mm");
long milliSec = 150923..(생략);
Date d = new Date();
Calendar cal = Calendar.getInstance();

변환하려는 문자열은 무조건 변환할 때에 사용하는 SimpleDateFormat과 형식이 일치해야한다.

 

2-1. String -> (SimpleDateFormat) -> Date

d = sdf.parse(str);

매우 간단하다.

 

2-2. Date -> (SimpleDateFormat) -> String

d = new Date(); //알아서 설정
str = sdf.format(d);

 

2-3. Date -> Calendar

cal.setTime(d);

 

2-4. Calendar -> Date

d = new Date(cal.getTimeInMillis());

 

add. String <-> Calendar

String과 Calendar의 상호 변환은 Date를 매개로 해서 하면 되는데,

cal.setTime(sdf.parse(str));

이런 식이다.