2013-10-24 3 views
5

NSDates로 변환해야하는 여러 날짜 문자열이 있습니다.하드웨어 종속 NSDateFormatter dateFromString : 버그 (nil 반환)

NSString *s = [pair objectForKey:@"nodeContent"]; 
NSDateFormatter *f = [[NSDateFormatter alloc] init]; 
[f setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZ"]; 
self.date = [f dateFromString:s]; 

위의 코드는 우리가 테스트 한 모든 장치와 시뮬레이터에서 잘 작동 : 내 구문 분석 코드는 다음과 같습니다. 이상한 점은 위 코드가 iOS 6.1 또는 7.0.x를 실행하는 iPhone 5에서 실행될 때마다 self.date = [f dateFromString:s]; 줄이 nil을 반환한다는 것입니다.

확인하고 문자열을 s 존재하고 날짜를 올바르게 구문 분석하는 장치와 나란히 비교할 때 동일한 문자가 포함되어 있습니다. `2013-10-31T21 : 00-06 : 00 : 00 '

내가 여기서 뭔가를 놓치고 50

이 예제 날짜 문자열은?

+0

* * *을 수량화하십시오. 로케일에 문제가 될 수 있습니까? –

+0

가능한 복제본 [NSDateFormatter 로캘을 처리하는 가장 좋은 방법은 무엇입니까? "]"(http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with- the-nsdateformatter-locale-feature) –

답변

12

날짜 형식 지정 프로그램의 로케일을 특수한 en_US_POSIX 로켈로 설정하지 않았기 때문입니다. iPhone 5의 설정은 24 시간 설정과 다를 수 있습니다.

고정 형식 문자열을 구문 분석 할 때마다 특수 로캘을 설정해야합니다.

+3

고맙습니다. 나는'[f setLocale : [NSLocale localeWithLocaleIdentifier : @ "en_US_POSIX"]];라는 행을 추가했으며 이제 작동합니다. – user2917941