Двоеточие в часовом поясе (+02:00)
- проблема. Согласно стандарту Unicode # 35 , шаблон заглавной буквы 1..3 обозначает часовой пояс RFC 822 . Часовые пояса RFC 822 представляют смещение от GMT (или UTC) и имеют следующий формат:
zone = "UT" / "GMT" ; Universal Time
...
...
/ ( ("+" / "-") 4DIGIT ) ; Local differential
; hours+min. (HHMM)
Как видите, между часами и минутами часового пояса нет двоеточия. Следовательно, часовой пояс должен быть +0200
.
Самое правильное решение - это сначала создать строку даты, соответствующую Юникоду, но если вы застряли в этом формате, вам может потребоваться предварительно обработать строку даты, прежде чем передать ее в NSDateFormatter
.
Например, быстрое исправление будет использовать stringByReplacingOccurrencesOfString
, чтобы избавиться от двоеточия в часовом поясе:
// dateString --> Fri, 26 Aug 2011 10:51:00 +02:00
dateString = [dateString stringByReplacingOccurrencesOfString:@":"
withString:@""
options:0
range:NSMakeRange(25, [dateString length] - 25)];
// dateString --> Fri, 26 Aug 2011 10:51:00 +0200
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSDate *date = [dateFormatter dateFromString:dateString];
// date --> 2011-08-26 08:51:00 +0000