2016-07-29 1 views
0

UTC 시간 문자열에서 NSDate 개체를 가져 오려고합니다. 내가 NSDateFormatter을 사용하고 같은 메이트 설정하고UTC 형식의 시간 문자열에서 NSDate 가져 오기

2016-07-29T11:43:55+02:00 

: yyyy-MM-dd'T'HH:mm:ss

을 그러나이 나에게 잘못된 시간대와 테이크를 제공하는 시간 문자열의 예는 이것이다. 위의 날짜는 2016-07-29T09 : 43 : 55 + 00 : 00

어떻게 유지합니까?

포맷터 끝 부분에 'Z'을 추가하려고했으나 아무런 결과도 반환하지 않습니다.

+0

맞습니다. 9 시간은 현지 시간보다 2 시간 늦었습니다. – Tander

+1

가능한 변환 [ISO 8601을 NSDate로 변환] (http://stackoverflow.com/questions/17558859/convert-iso-8601-to-nsdate) – vadian

+0

날짜 형식이 정확하고 날짜 문자열이 올바르게 구문 분석되므로 GMT가 들어오는 날짜 문자열을 상쇄하는 것을 어떻게 감지하는지 묻습니다. – Droppy

답변

2

는 모두 도움이

NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init]; 
[userFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 
NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[userFormatter setLocale:posix]; 
NSString *dateConverted = [userFormatter stringFromDate:theDate]; 
+0

작동하지 않을 것입니다 (포맷터에 'T'가 없습니다). 그리고 질문에 답하지 않습니다. – Droppy

0

감사를 사용해보십시오. 문제를 해결했습니다. iOS 시뮬레이터의 시간이 정확했습니다. 그러나 내가 [NSDate date];라고 부를 때 그것은 show'd 나에게 지방의 시간 앞에 2 시간 시간. 따라서 NSDate의 형식에서 '오류'가 표시되었습니다.

+0

당신을 어디에서 봤니? 'NSLog()'를 할 수 있을까요? – Droppy

+0

네, NSLog. iOS 시뮬레이터가 정확한 시간을 표시하지만 NSLog가 표시되지 않는 이유가 있습니까? – Tander

+0

진지하게; 이것은 아마 stackoverflow에 대한 가장 많은 질문 중 하나이며 iOS/OSX 개발자가 그것에 대해 알지 못하는 이유는 없습니다. 'NSLog()'는'[NSDate description]'을 호출하고'description '은 UTC 시간대로 날짜를 형식화합니다. 다른 시간대의 날짜를 표시하려면 'NSDateFormatter' (시간대 포함)을 설정하고 날짜 -> 문자열 변환을 사용하십시오. – Droppy