2013-01-06 3 views
0

설명서를 읽은 후 다음과 같은 경우에는 작동하지만 결과는 항상 nil 인 것처럼 보입니다. (iOS SDK 6 용)또 다른 NSDateFormatter 문제

NSString *releaseDate = @"2012-10-22T00:00:00-07:00"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSDate *date = nil; 

[dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss-ZZZZZ"]; 
date = [dateFormatter dateFromString:releaseDate]; 

NSLog(@"Result date: %@", date); // Logs "(null)" 

통찰력이 있으십니까?

미리 도움을 청하십시오.

답변

1

어떨까요? 내가 추측 오전로 날짜 문자열이 현지화되지 않은 경우에도 애플은이 같은 것을 사용할 수 있습니다 제안 :

struct tm tmDate; 
const char *formatString = "%Y-%m-%dT%H:%M:%S%z"; 

strptime_l(releaseDate, formatString, & tmDate, NULL); 
date = [NSDate dateWithTimeIntervalSince1970: mktime(& tmDate)]; 

NSLog(@"Result date: %@", date); 

귀하의 출시 날짜는에서도 얻을 수있는 const char *releaseDate = "2012-10-22T00:00:00-07:00"; 같이, 비록 C 문자열이어야 할 것이다 UTF8String 방법은 NSString입니다.

+0

감사합니다. 나는 그것을 시도 할 것이다. 그래도 문서화 된 형식이 작동하지 않는 이유를 얻지 마십시오! – izk

1

확인.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSString *releaseDate = @"2012-10-22T00:00:00-07:00"; 
NSDate *date = nil; 

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; 
date = [dateFormatter dateFromString:releaseDate]; 

NSLog(@"Result date: %@", date); 
NSLog(@"Result string: %@", [dateFormatter stringFromDate:date]); 

은 "T"는 따옴표로 묶어야했다 및 시간 영역의 "ZZZZZ는"이미 차지 "-"그것을해야했다 그래서 : 워드 프로세서의 다시 읽기의 비트 내 오해를 밝혀 제거되었습니다.

이제 예상대로 작동합니다.