2012-04-12 2 views
2

NSDate 포맷터를 사용하여 페이스 북 그래프 API 요청 (GMT)에서 날짜를 가져 와서 사용자의 로컬 시간대로 변환합니다. 나는 날짜를 잘 읽고 새로운 시간대를 정할 수 있지만 새로운 날짜를 인쇄 할 때 일광 절약 시간을 고려하지 않는 것 같습니다. 그것은 "목 2012년 1월 12일 (10)를 출력이 날짜를 인쇄 할 때 아래NSDateFormatter 일광 절약 시간

시간이 실제로 요청에서 올 것이다하지만, 예를 들어 여기 난 그냥 페이스 북의 응답

NSString *time = @"2012-04-12T15:25:09+0000" 
NSTimeZone *localZone = [NSTimeZone localTimeZone]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setTimeZone:localZone]; 
[formatter setDateFormat:@"yyyy-mm-dd'T'HH:mm:ssZZZZ"]; 
NSDate *date = [formatter dateFromString:time]; 
[formatter setDateFormat:@"eee MMM dd, yyyy hh:mm a"]; 
NSString *dateStr = [formatter stringFromDate:date]; 
NSLog(@"%@",dateStr); 

에서 표준 시간 문자열에 입력 : 25 AM "이는"America/New_York "시간대, 즉 내가있는 곳에서 잘못된 것입니다. 나는 "Thu Jan 12, 2012 11:25 AM"또는 1 시간 전이어야합니다. 낮 절약 시간을 강제하는 방법이 있습니까? 미리 감사드립니다!

편집 : 실제로 월을 잘못 포맷하고있는 것으로 나타났습니다. 어떤 이유로 든 4 월에 1 월에 나옵니다. 왜 이럴 수 있니?

+0

나는 그 달이 잘못되었음을 방금 알았다. 왜? – MZimmerman6

답변

8

그것은 내가 어디에 "미국/뉴욕 '타임 존, 대한, 즉 잘못"목 2012년 1월 12일 10:25 AM "을 출력한다이 날짜를 인쇄 할 때.

아니요. 일광 절약 시간제는 3 월까지 시작되지 않으므로 그 시간에 적용하는 것은 잘못된 것입니다. NSDateFormatter 여기에서 올바른 일을하고 있습니다.

특정 GMT 오프셋을 강제 적용하려면 localTimeZone 대신 NSTimeZone timeZoneForSecondsFromGMT:을 사용해야합니다.

+0

글쎄, 실제로 나는 그 문제가 아마 달을 잘못 포맷하는 것으로부터 유래하고 있음을 발견했다. 달이 왜 잘못 됐는지 어떤 생각? – MZimmerman6

+4

'[formatter setDateFormat : @ "yyyy-mm-dd'T'HH : mm : ssZZZZ"];''[formatter setDateFormat : @ "yyyy-MM-dd'T'HH : mm : ssZZZZ"]이어야합니다. ' – yuji

+0

와우, 나는 바보 같아. 고마워요! – MZimmerman6