2010-07-20 5 views
3

JSON을 통해 저에게 매우 이상한 날짜 형식이 있습니다. 예 : - "2010 년 7 월 18 일 02:22:09"NSDateFormatter, NSDate, UTC 및 이상한 날짜 형식

이 날짜는 항상 UTC입니다. 내 장치의 오프셋 (offset)로 표시되는 로그인 할 때 나는 ...,

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; 
[inputFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; 
[inputFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
[inputFormatter setDateFormat:@"MMMM, dd yyyy HH:mm:ss"]; 
NSDate *formatterDate = [inputFormatter dateFromString:dtStr]; 

그러나 ... 날짜를 NSDateFormatter와 날짜를 분석하고, UTC에 시간대를 설정하고있어

"2010-07 -18 02:22:09 -0600 "

여기서 내가 뭘 잘못하고 있니?

답변

2

NSDate가 UTC 시간대를 사용하지 않기 때문입니다. 워드 프로세서있는 NSDate의 기술 방법에 대해 이런 말 :

국제 형식 YYYY-MM-DD HH의 수신기의 스트링 표현 : ± HHMM는 시간 오프셋 시간대를 나타내는 HHMM, ± SS : MM GMT로부터의 분 (예 : "2001-03-24 10:45:32 +0600").

그래서, 당신은 실제로 아무 잘못도 없습니다. NSDate가 예상대로 작동합니다. 무엇을 성취하려고합니까? 날짜가 문자열로 필요합니까? 데이트 상대를하고 있니?

+0

감사합니다. 당신 말이 맞아요. NSDate가 실제로 시간대 정보를 저장하지 않을 때 오프셋을 표시하는 것은 혼란 스럽습니다. –

+0

표준 시간대 정보뿐만 아니라 형식입니다. 그것이 어떻게 만들어 졌는지 전혀 모른다. 그것은 미국의 긴 형식의 날짜에서 작성된 것이거나 UTC로 작성된 시간이라는 것을 알지 못합니다. 그래서 설명은 현지 시간과 ISO 8601 형식으로되어 있습니다 : 그것이 어떻게 작성되었는지에 관계없이 모든 날짜가 그 자체를 설명하는 방법입니다. 특정 형식 및/또는 특정 시간대로 표현 된 날짜를 가져 오려면 포맷터를 사용하여 날짜를 나타낼 필요가 있습니다. 포맷터를 사용하여 날짜를 구문 분석 한 방법과는 반대입니다. –

+0

이 형식이 필요한 경우 "2010-07-18 02:22:09 +0000", 어떻게 얻을 수 있습니까? – Maystro