我有一个应用程序,当前从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
如何修复日期字符串?
答案 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];
}