오늘도 하나 배운것을 써보고자 합니다.
오늘은 날짜를 텍스트로 변환하는 것을 쓰기위해 배운 SimpleDateFormat 입니다.
날짜를 원하는 형태로 바꾸려고 하다가 보니 String 클래스를 너무 남발하게 되어서 이거 쉽게 쓸 수 있게 구현해 놓은 것이 없나 찾다가 발견한 클래스입니다.
역시 API 검색은 꼭 해봐야 한다는.. 덜덜덜.. ㅡㅡㅋ
아래 간단한 설명을 덧붙입니다.
자세한 것은
http://pllab.kw.ac.kr/j2seAPI/api/java/text/SimpleDateFormat.html
http://blog.naver.com/redfreek2c?Redirect=Log&logNo=120027224944
참조하면 도움이 되실 거예요~~
아참 제가 썼던 패턴은
SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss.S");
였습니다.
패턴에서 대소문자에 따라 결과가 완전 달라질 수 있으니 주의하세요.!!
SimpleDateFormat Class
SimpleDateFormat 은 일자의 Format을 (일자 -> 텍스트, 텍스트 -> 일자)의 형태로 정규화 시킬 수 있도록 구현된 클래스입니다.
java.text
클래스 SimpleDateFormat
java.lang.Object java.text.Format java.text.DateFormat java.text.SimpleDateFormat
SimpleDateFormat을 사용하면, 일자/시각 포맷을 유저가 정의한 패턴으로 선택하여 정규화(변환)가 가능합니다.
그러나, 되도록 DateFormat의 getTimeInstance, getDateInstance 또는 getDateTimeInstance 로 일자/시각 형태를 작성하도록 해야 합니다.
이러한 클래스 메소드는 모두, 디폴트 포맷 패턴으로 초기화된 일자/시각 형태를 돌려줄 수가 있습니다.
필요에 따라서 포맷 패턴은 applyPattern 메소드를 사용해 수정할 수가 있습니다.
이러한 메소드의 사용법에 대해서는 DateFormat 를 참조해 주세요.
일자/시각 포맷은 일자/시각 패턴 캐릭터 라인으로 지정됩니다.
일자/시각 패턴 캐릭터 라인내에서는, 인용부호로 둘러싸이지 않은 'A' ~ 'Z' 및 'a' ~ 'z' 는, 일자 또는 시각 캐릭터 라인의 컴퍼넌트를 나타내는 패턴 문자로서 해석됩니다.
텍스트는 단일 인용부호 (')로 둘러싸는 것으로 해석을 회피할 수 있습니다. 「''」는 단일 인용부호를 나타냅니다.
다른 모든 문자는 해석되지 않고, 포맷중에 출력 캐릭터 라인에 단순하게 카피되는지, 해석중에 입력 캐릭터 라인에 대해서 일치 당합니다.
▨ 다음의 패턴 문자가 정의됩니다.
Symbol | Meaning | Presentation | Example |
---|---|---|---|
G | era designator | (Text) | AD |
y | year | (Number) | 1996 |
M | month in year | (Text & Number) | July & 07 |
d | day in month | (Number) | 10 |
h | hour in am/pm (1~12) | (Number) | 12 |
H | hour in day (0~23) | (Number) | 0 |
m | minute in hour | (Number) | 30 |
s | second in minute | (Number) | 55 |
S | millisecond | (Number) | 978 |
E | day in week | (Text) | Tuesday |
D | day in year | (Number) | 189 |
F | day of week in month | (Number) | 2 (2nd Wed in July) |
w | week in year | (Number) | 27 |
W | week in month | (Number) | 2 |
a | am/pm marker | (Text) | PM |
k | hour in day (1~24) | (Number) | 24 |
K | hour in am/pm (0~11) | (Number) | 0 |
z | time zone | (Text) | Pacific Standard Time |
' | escape for text | (Delimiter) | |
'' | single quote | (Literal) |
▨ 일반적인 패턴의 사용 예
Format Pattern | Result |
---|---|
"yyyy.MM.dd G 'at' HH:mm:ss z" | 1996.07.10 AD at 15:08:56 PDT |
"EEE, MMM d, ''yy" | Wed, July 10, '96 |
"h:mm a" | 12:08 PM |
"hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time |
"K:mm a, z" | 0:00 PM, PST |
"yyyyy.MMMMM.dd GGG hh:mm aaa" | 1996.July.10 AD 12:08 PM |
※ 동기화
SimpleDateFormat은 동기화 되지 않습니다. thread 마다 다른 포맷 인스턴스를 작성하는 것을 추천합니다. 복수의 thread가 포맷에 동시에 액세스 하는 경우는, 외부적으로 동기화할 필요가 있습니다.