[Java] SimpleDateFormat Class


오늘도 하나 배운것을 써보고자 합니다.
오늘은 날짜를 텍스트로 변환하는 것을 쓰기위해 배운 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 를 참조해 주세요.

SimpleDateFormat Pattern
일자/시각 포맷은 일자/시각 패턴 캐릭터 라인으로 지정됩니다.
일자/시각 패턴 캐릭터 라인내에서는, 인용부호로 둘러싸이지 않은 '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가 포맷에 동시에 액세스 하는 경우는, 외부적으로 동기화할 필요가 있습니다.