dateFromString在ios 6中工作,但不在ios 5中

此代码在iOS 6.0模拟器上工作,但不适用于iOS 5.0

NSString *unformattedDate = @"2008-09-25T20:41:11.000+00:00"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"]; NSDate *dateFromString = [dateFormatter dateFromString:unformattedDate]; [dateFormatter setDateFormat:@"dd.MM.yy"]; NSLog(@"%@", [dateFormatter stringFromDate:dateFromString]); 

什么可能是错的?

由于ZZZZZdate格式说明符是在iOS 6中添加的,因此无法格式化带有iOS 5的+99:99格式的时区的date。两种版本都支持使用ZZZZ+9999格式。 如果你知道你的date/时间string将总是有冒号的时区,那么你可以去掉冒号。

 NSString *unformattedDate = @"2008-09-25T20:41:11.000+00:00"; NSRange range = [unformattedDate rangeOfString:@":" options:NSBackwardsSearch]; if (range.location != NSNotFound && range.location >= unformattedDate.length - 4) { unformattedDate = [unformattedDate stringByReplacingCharactersInRange:range withString:@""]; } NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; [dateFormatter setLocale:locale]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"]; NSDate *dateFromString = [dateFormatter dateFromString:unformattedDate]; [dateFormatter setDateFormat:@"dd.MM.yy"]; NSLog(@"%@", [dateFormatter stringFromDate:dateFromString]); 

请注意,对于像这样的固定格式,您必须将格式器的语言环境设置为特殊的“en_US_POSIX”语言环境。