我在 OS 3.x 上运行了以下代码
NSString *stringDate = @"2010-06-21T20:06:36+00:00";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *theDate = [dateFormatter dateFromString:stringDate];
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
但现在在最新的xcode 3.2.3中,在iOS4模拟器下,变量theDate为nil。
我查看了类引用,没有发现任何已弃用或针对 iOS4 使用这些特定方法以不同方式实现的内容。我遗漏了什么?
最佳答案
我发现如果你这样做的话它会起作用(见下文)。关键是使用方法:
- [NSDateFormatter getObjectValue:forString:range:error:]
而不是
-[NSDateFormatter dateFromString]
完整代码:
+ (NSDate *)parseRFC3339Date:(NSString *)dateString
{
NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
[rfc3339TimestampFormatterWithTimeZone setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[rfc3339TimestampFormatterWithTimeZone setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *theDate = nil;
NSError *error = nil;
if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
}
[rfc3339TimestampFormatterWithTimeZone release];
return theDate;
}
关于iphone - NSDateFormatter 在 OS 4.0 中返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094819/