2013-08-13 4 views
2

Tue Aug 13 17:29:20 MSK 2013과 같은 날짜 문자열을 인식해야합니다. 그리고 내가 알기로 NSDateFormmater에서 'V'기호를 사용해야하지만 시간대와 같은 GMT+04:00 만 인식합니다. 표준 시간대 약어를 구문 분석하는 다른 방법이 있습니까?NSDateFormatter 시간대 약어

NSDateFormatter *dft = [[NSDateFormatter alloc] init]; 
    [dft setDateFormat:@"EEE MMM dd HH:mm:ss V yyyy"]; 
    NSLog(@"%@", [dft stringFromDate:[NSDate date]]); 
    NSLog(@"%@", [dft dateFromString:@"Tue Aug 13 17:29:20 MSK 2013"]); 

출력 :

Tue Aug 13 17:37:41 GMT+04:00 2013 
(null) 

NSLog(@"%@", [dft dateFromString:@"Tue Aug 13 17:29:20 GMT+04.00 2013"]) 함께 출력 괜찮 여기

코드이다.

답변

2

http://www.openradar.me/9944011에 따르면 Apple은 NSDateFormatter가 사용하는 ICU 라이브러리를 Lion/iOS 5 시대에 따라 업데이트했습니다. 특히 "MSK"(모스크바 시간)와 같이 대부분의 3 자 시간대를 모호하게 처리하지 않으므로 "cu"플래그가 로케일로 설정된 경우에만 사용됩니다.

이렇게하면 처리 할 수 ​​있습니다. 이와 예를 들면 다음과 같습니다

NSString *threeLetterZone = [[dateString componentsSeparatedByString:@" "] objectAtIndex:4]; 
NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation:threeLetterZone]; 
if (timeZone) 
{ 
      NSString *gmtTime = [dateString stringByReplacingOccurrencesOfString:threeLetterZone withString:@"GMT"]; 
      date = [[pivotalDateFormatter dateFromString:gmtTime] dateByAddingTimeInterval:-timeZone.secondsFromGMT]; 
} 

this code

+0

최고를 바탕으로! 도움을 얻으려면 Tnx. –