この件に関してはたくさんのスレッドがあることを知っており、それらすべてを読みました。
私の特定のケースでは、iPhone 6.1 シミュレーターでテストすると、dateFromString は問題なく動作しますが、iPhone 5.1 シミュレーターでは null を返します。また、iOS6 と iOS5 で同じ結論に達した複数のデバイスでテストしました。
「入力」の形式: 2013-02-15T18:00:00+03:00
次のコードを書きました。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss+zz:zz"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:input];
[dateFormatter setDateFormat:@"EEE'. 'dd' 'MMM' 'yyyy', 'HH':'mm"];
NSString *stringFromDate = [dateFormatter stringFromDate:dateFromString];
return stringFromDate;
... stringFromDate で iOS6 では "Fri. 15 Feb 2013, 18:00" を取得し、iOS5 では "null" をシミュレータとデバイスの両方で取得します。
私を助けてください