Аббревиатура часового пояса NSDateFormatter

Мне нужно распознать строки даты, такие как Tue Aug 13 17:29:20 MSK 2013 . И, как я знаю, для этого мне нужно использовать символ «V» в NSDateFormmater, но он распознает GMT+04:00 как часовые пояса. Есть ли другой способ разбора аббревиатуры часового пояса?

Вот код:

  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"]) вывод прекрасен.

согласно http://www.openradar.me/9944011 , Apple обновила библиотеку ICU, от которой зависит NSDateFormatter, некоторое время в эпоху Lion / iOS 5. и он больше не обрабатывает большинство трехбуквенных часовых поясов, таких как «MSK» в частности (по московскому времени), потому что они неоднозначны, они используются только в том случае, если для локали установлен флаг «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]; } 

Основываясь на этом коде

Давайте будем гением компьютера.