Search Results for 'DateFormat'

2 POSTS

  1. 2013.07.22 jstl fmt:formatDate pattern 다시 확인하자
  2. 2009.02.17 String을 Date로 변환시 포맷형태 정리.

jstl 에서 dateformat으로 표현할때는 <tmf:formatDate>를 사용합니다.

시간을 나타낼때는 보통 다음과 같이 24시간제를 자주 사용하곤 했습니다.

표현법은 java 의 SimpleDateFormat 을 따릅니다.

<fmt:formatDate value="${a.regDate}" pattern="yyyy-MM-dd KK:mm:ss"/>

 or

<fmt:formatDate value="${a.regDate}" pattern="yyyy-MM-dd HH:mm:ss"/>

 

하지만 위의 표현은 틀린것이라는 것을 최근에 알았습니다.

0~23시까지 나타내는 HH를 사용하던 버릇 그대로 1~24시까지 나타낼때도 대문자 KK를 그대로 사용하고 있었는데, 이게 대문자가 아닌 소문자 k라는 것을 최근에 알았던 것입니다.

그런데 저만 그런것이 아닌것 같습니다. 검색해서 찾아보면 몇몇 블로그에서 서로 다르게 가이드 하고 있습니다.

 

직접 두번, 세번 확인한 결과

 

h : 1~12

H : 0~ 23

k : 1~ 24

K :0 ~11

 

입니다.

 

다음 표는 java 1.4.2 정식문서에 있는 것입니다.

 

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




날짜를 나타낼때 변수로 받은 타입이 스트링일 경우가 많다. 이경우 DateFormat을 이용하여 Date 타입으로 컨버팅 하는데 자주 사용하다 보니 유틸리티로 만들어서 사용하곤 한다. 
그러다 보니 그 포맷 형태를 까먹을 때가 많다. 굳이 다 기억하고 싶지는 않지만 그래도 정리하고자 한다.

가장 일반적으로 사용하는 클래스는 java.text.SimpleDateFormat 클래스를 사용하는데, 성능면에서 많이 떨어진다고 한다.(얼마나 떨어지는지는 비교수치를 찾을 수가 없다. 시간 되면 테스트 한번 해보자). 그래서 사용하는 것이 apache.commons 에 있는 FastDateFormat 클래스이다.
SimpleDateFormat이든 FastDateFormat이든 변수로 사용되는 format 형식은 동일하다.

Letter Date / Time Component Examples
G Era designator AD
y Year 1996; 96
M Month in year July; Jul; 07
w Week in year 27
W Week in month 2
D Day in year 189
d Day in month 10
F Day of week in month 2
E Day in week Tuesday; Tue
a Am/pm marker PM
H Hour in day (0-23) 0
k Hour in day (1-24) 24
K Hour in am/pm (0-11) 0
h Hour in am/pm (1-12) 12
m Minute in hour 30
s Second in minute 55
S Millisecond 978
z Time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone -0800

1. String을 Date 타입으로 변환시 예제
String stringDate = "2009/02/19";
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date newDate = dateFormat.parse(stringDate);

apache.commons의 FastDateFormat 클래스는 다음처럼 사용한다.
FastDateFormat fastdateformat = FastDateFormat.getInstance(format, locale);
locale은 request로 부터 받아도 되고 또는 Default로 new Locale("ko_KR")처럼 지정할수도 있다.

2. 역으로 Date타입을 String타입으로 변환시 예제
String newStringDate = dateFormat.format(newDate)

상황에 따라서 newDate.toString()을 쓰기도 하지만 엉뚱한 값이 나올수도 있으니 유의.

다음엔 Locale에 들어가는 값에 대해 알아보고 정리해 보기로 해야겠다.