由于ZZZZZ
日期格式说明符是在 iOS 6 中添加的,因此您无法+99:99
格式化具有 iOS 5 格式的时区的日期。两个版本都支持+9999
使用ZZZZ
. 如果你知道你的日期/时间字符串总是有一个带有冒号的时区,那么你可以去掉冒号。
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”语言环境。