NSDateFomatter를 사용
일반적인 사용예)
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateStyle:NSDateFormatterMediumStyle];
[df setTimeStyle:NSDateFormatterShortStyle];
NSString *showDate = [df stringFromDate:[NSDate date]];
[df release];
문석을 하자면,
1라인 NSDateFormatter df 를 생성
2라인 날짜부분 스타일을 NSDateFormatterMediumStyle로 준다
3라인 시간부분 스타일을 NSDateFormatterShortStyle로 준다
4라인 showDate에 위에서 준 스타일로 현재시간을 문자열로 바꾸어 할당한다.
5라인 df를 메모리에서 삭제
특징적인건 DateStyle과 TimeStyle을 나누어 관리하고 있다는 점이다.
NSDateFormatterMediumStyle, NSDateFormatterShortStyle은 NSDateFormatterStyle에 정의 되어 있는데
자세한건 Apple에 NSDateFormatterStyle 에서 보자.
일반적으로 (지극히 미국 관점에서) 쓸만한 출력 형태를 다 정의 해두었다.
허나,위에 정의 되지 않은 스타일로 날짜를 출력하는 방법을 간단히 소개한다.
(물론 위의 site에도 나온다.)
사용할 method는 NSDateFormatter의 setDateFormat 이다.
사용방법은 생성후 release전까지 사이에 아래와 같은 코드를 넣으면 된다.
[df setDateFormat:@"yyyy-MM-dd"];
첫인자 string 이 dateformat string 이다.
dateformat string을 적절히 조합하여 나만의 날짜 시간 출력을 만들어 낼 수 있다.
위에서 사용한 dateformat string에 쓸수 있는 특수 문자는 yyyy, MM, dd이다. 이 특수 문자는 각각 출력하고자 하는 NSDate의
속성을 나타내며 stringFromDate 할때 각각 의미에 맞는 NSDate속성으로 치환되어 보이게 된다.
특수문자에 관해서는 많은 테스트를 해보지는 않았지만 몇가지 테스트 결과를 공개한다.
yyyy : 4자리 년도
yy: 2자리 년도 (2010에 20 이 빠짐)
MM: 2자리 월
M: 월 (한자리일경우 한자리로 나타남)
MMM: 짧은 월표시 (Jan, Feb ...)
MMMM: 긴 월표시 (January, February,...)
dd: 2자리 일
d: 일(한자리일경우 한자리로 나타남)
h: 12시간 기반 시간 (한자리일경우 한자리로 나타남)
hh: 12시간 기반 시간 두자리
H: 24시간 기반 시간(한자리일경우 한자리로 나타남)
HH: 24시간 기반 시간 두자리
m: 분(한자리일경우 한자리로 나타남)
mm: 2자리 분
s: 초 (한자리일경우 한자리로 나타남)
S: 초 (0시0분0초 부터 지난 시간을 초로 환산한듯)
ss: 2자리 초
G: 기원전후? (AD/BC)
a: (AM/PM) 오전 오후
A: 모르겠음 아마 하루를 millsecond로 표기한게 아닐지 (0시0분0초 부터 지난 시간을 밀리초로 환산한듯)
Z: +0000 TIMEZONE 표시
c: 요일 숫자 (1~7 1이 일요일)
ccc: 짧은 요일 표시 (Sun, Mon...)
cccc: 긴 요일 표시 (sunday, monday ...)
q/qq/qqq/qqqq: 분기 (제 1/4분기)
고찰: dateformat string 에 위에 치환되게 되는 특수문자로써가 아니라 정말 그 문자를 찍고 싶을 때는 어떻게 하는 지 알아내지 못했습니다.
예를 들어 오늘이 2010-01-02일때 일을 다음과 같이 표시한다고 합니다.
d:02
그래서 dateformat string을
"\d:dd" 이렇게 해보았는데
warning(알려지지 않은 escape sequence) 이 뜨고 결과는 2:02가 되더 군요
쩝 결국 일반 문자열과 조합해서 쓸 수 밖에 없는듯 하더군요.
주의할점 : 월, 요일, 분기등 긴이름 짧은 이름을 지원하는 것들은 iphone의 지역 설정(언어설정이 아님)에 따라 결과가 틀려진다.
요일 짧은 이름에서 지역이 미국일때 "Sun"으로 표시되지만, 지역을 한국으로 하면 "일" 이라 표시된다.
만일 다른 문자의 사용 용도를 알고 계신 분은 댓글에 알려주시면 반영하겠습니다.
'iOS' 카테고리의 다른 글
iPhone 사진앨범과 같은 썸네일만들기 (0) | 2011.02.11 |
---|---|
트위터 api (0) | 2011.01.27 |
iPhone NSDictionary 와 Array 와 Plist(XML) 파일의 구조 (0) | 2011.01.26 |
iPhone View Switching 을 위한 모달뷰(ModalView) 사용법 (0) | 2011.01.26 |
iPhone Tutorial - nib 에서 불러온 뷰를 특정위치에 모달로 띄우는 방법 (0) | 2011.01.26 |