는 일반적으로, 당신은 그들이에서오고있어 무엇 로케일 알고, 당신은 NSDateFormatter를 취할 것, 사용하여 로케일을 설정 평가 setLocale:
, setDateStyle:
및 setTimeStyle:
을 사용하여 날짜 및 시간 형식을 설정 한 다음 dateFromString:
을 사용하십시오.
struct tm sometime;
const char *formatString = "%a, %d %b %Y %T %z";
strptime_l("Fri, 25 Mar 2011 10:16:00 -0700", formatString, &sometime, NULL);
NSDate *newDate = [NSDate dateWithTimeIntervalSince1970: mktime(&sometime)];
다음, 당신은 동부 시간으로 newDate을 "변환"할 : 당신은 당신이,이 다음 use the UNIX functions 수있는 로케일을 모르기 때문에 그렇게 할 수 없습니다. 나는 NSDates가 2001 년 1 월 1 일 이후에 초 단위로 표현 된 시간대에 관한 정보를 포함하고 있지 않기 때문에 "변환"이라고 말합니다. 그래서 변환에 대한 아이디어는 의미가 없습니다. NSDate를 인쇄 할 때 UTC (+0000)로 표시되지만 NSDate는 다른 어떤 것보다 해당 시간대와 더 이상 관련이 없습니다.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_UK"]];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSLog(@"%@",[dateFormatter stringFromDate:newDate]);
// Outputs 25 Mar 2011 13:16
:
은 당신이 대신하고 싶은 올바른 시간대와 dateFormatter를 작성하고 출력에 날짜를 사용하는 것입니다