iphone - NSDateFormatter 在 OS 4.0 中返回 nil

标签 iphone ios4 nsdateformatter

我在 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/

相关文章:

ios - 将静态时间转换为 NSDate 返回旧日期

iPhone 开发者计划 - 如何以多个公司名称进行销售

iphone - 如何在iOS中的UIGestureRecognizer中匹配图像形状?

ios - 如何在iPhone SDK中使用手势在屏幕上绘图?

ios - 在 iOS Swift 项目中从 "2015-01-17T20:00Z"创建 NSDate

swift - 将一个时区的日期字符串转换为本地时间 Swift 中的日期对象

iphone - 无法在 UILabel 中访问我的文本属性

iphone - UITableViewCell 重复 UIImages

ios - 在 UITableView 中默认重新加载后如何记住选择的行并维护它们?

objective-c - 如何动画切换到 UISplitView?