为什么解析后日期返回nil?

时间:2013-04-30 17:35:15

标签: ios nsdate

我有一个应用程序,当前从Web服务获取数据,NSXML将其解析为Core Data。处理核心数据。我错过了一个updatedAtData字段,我要求客户将其添加到他们的Web服务中,然后将其添加为String。这就是解析日期的方法:

- (void)setValue:(id)value forKey:(NSString *)key forManagedObject:(NSManagedObject *)managedObject {

    if ([key isEqualToString:@"createdAt"] || [key isEqualToString:@"updatedAt"]) {
        NSDate *date = [self dateUsingStringFromAPI:value];
        [managedObject setValue:date forKey:key];
    } else {
        [managedObject setValue:value forKey:key];
    }
}

它在这里运行良好。通过调用此方法设置日期:

- (NSDate *)dateUsingStringFromAPI:(NSString *)dateString {
    [self initializeDateFormatter];
    dateString = [dateString substringWithRange:NSMakeRange(0, [dateString length]-5)];

    return [self.dateFormatter dateFromString:dateString];
}

但是日期永远不会被设置,它会返回nil。我认为它与日期格式有关,这是服务器返回的内容:

1900-01-01T00:00:00

如何修复日期字符串?

1 个答案:

答案 0 :(得分:1)

您的日期格式应为

@"yyyy-MM-dd'T'hh:mm:ss"

假设年 - 月 - 日'T '12小时(格式):分钟:秒

所以你的代码会像这样

     [self.dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss"];
    return [self.dateFormatter dateFromString:dateString];
}