본문 바로가기

iOS개발팁

NSDate와 NSDateFormatter 사용하기 02

NSDateFormatter가 제공하는 기본 스타일을 사용하지 않고 사용자가 직접 스타일을 지정하여 날짜의 문자열을 얻을 수 있습니다. 아래의 코드를 보시죠 :)
//커스텀 날짜 형식
{
        NSDate *today = [NSDate date];
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"MM/dd/yyyy hh:mma"];
        NSString *dateString = [dateFormat stringFromDate:today];
        NSLog(@"Custom Style Date : %@", dateString);
}
//출력결과
//Custom Style Date : 10/06/2010 03:39PM
위에서 MM, dd, yyyy 와 같은 형식지정자가 어떤 역할을 하는지 알아야 하는데 어디서 그 내용을 알 수 있을까요? 바로 ICU (International Components for Unicode)에서 표준 날짜 형식 지정자를 정해 놓습니다. 여기서 제공하는 문서에서 날짜 형식 패턴 부분을 보면 자세한 설명과 간단한 예제가 있습니다. 아래에 예제를 첨부합니다.

Pattern Result (in a particular locale)
yyyy.MM.dd G 'at' HH:mm:ss zzz 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.MMMM.dd GGG hh:mm aaa 01996.July.10 AD 12:08 PM

코드를 통해 몇가지 예제를 더 살펴 보겠습니다.
//커스텀 날짜 형식
{
        NSDate *today = [NSDate date];
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
        NSString *dateString = [dateFormat stringFromDate:today];
        NSLog(@"%@", dateString);
}
//출력결과
//Wednesday October 6, 2010
//커스텀 날짜 형식
{
        NSDate *today = [NSDate date];
        NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormat setDateFormat:@"H:mm a, zzz"];
        NSString *dateString = [dateFormat stringFromDate:today];
        NSLog(@"%@", dateString);       
}
//출력결과
//15:39 PM, GMT+09:00
이제 형식을 스스로 정해서 날짜를 문자열로 변경하는데 무리가 없을 것입니다. 다음에는 문자열로 표현된 날짜를 어떻게 NSDate로 바꾸는지 알아 보겠습니다.