본문 바로가기

IT-Consultant

날짜 표현하기 SimpleDateFormat

RSS에서 가져온 데이터 중 날짜 포맷이 있는데 그것을 Date 타입으로 변환시켜주는 것은 apache의 DateUtil을 사용하면 된다. 
그 후에 Date 타입을 원하는 포맷으로 변경하기 위해서 SimpleDateFormat을 사용했다. 
DB에서 TO_CHAR처럼 yyyyMMdd를 사용할 수 있어서 DB를 해본 사람은 쉽게 접근할 수 있다.
 
날짜 표현하는데는 DateFormat이 있다. 하지만 내가 원하는 패턴으로 보여주지 않는다. 이 클래스를 사용하면 "2009년 5월 29일 금요일" 또는 "2009. 5. 29", "09. 5. 29"와 같이 보여준다. 내가 원하는 표시형태는 "20090529"인데..

Date now = new Date();

DateFormat format1 = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println(format1.format(now));
DateFormat format2 = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(format2.format(now));
DateFormat format3 = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(format3.format(now));
DateFormat format4 = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(format4.format(now));

결과는 아래처럼..

2009년 5월 29일 금요일
2009년 5월 29일 (금)
2009. 5. 29
09. 5. 29



자.. 그럼 내가 원하는 날짜표현을 쓸 수 있는 방법을 찾아보자. 다으밍(Google은 Googling이니깐 Daum은 Dauming인겨?? =ㅅ=a)을 했다. 워낙 많이 찾는 내용이라 잘 나온다. ㅋㅋ

패턴을 사용하는 방법 중 간단한 방법은 을 사용하는 방법이다. SimpleDateFormat은 DateFormat을 상속받아 사용하기 편하게 이쁘게 되어 있다. 이 클래스를 사용하면 우리가 자주 사용하는 "yyyyMMdd"와 같은 표현을 사용할 수 있다.

Date now = new Date();

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
System.out.println(format.format(now)); // 20090529
format = new SimpleDateFormat("E MMM dd HH:mm:ss", Locale.UK);
System.out.println(format.format(now)); // Fri May 29 11:06:29


패턴 사용법은 누구나 아니까 패스~~하고, 패턴 구문만 살짝.. 튜토리얼에서도 사용법을 알 수 있다.
Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
M Month in year 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 in week Text Tuesday; Tue
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 -0800

그리고 아래의 간단한 예제는 API문서에서..
Date and Time Pattern Result
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700


+ 튜토리얼에서도 사용법을 알 수 있다.