我有一个JSON Feed进入我的应用程序,其中一个字段是组合日期&时间字符串,我需要拆分成离散的日期和时间字符串,以便在表格单元格中显示。来自JSON的输入示例是:
2012-01-18 14:18:00.
我对日期格式化程序感到有点困惑,显然我做得不对 - 我已经尝试了很多教程,但大多数似乎只是展示如何格式化日期。
我尝试过这样的事情来获得时间:
NSDictionary *rowData = [self.raceData objectAtIndex:[indexPath row]];
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"h:mma"];
NSDate *raceDate = [dateFormat dateFromString:[rowData valueForKey:@"race_time"]];
NSString *raceTime = [dateFormat stringFromDate:raceDate];
但是在输出上,raceTime只是null。
任何帮助表示感谢。
答案 0 :(得分:0)
也许格式应该更像
[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];
可能会清除abit
答案 1 :(得分:0)
是的,我有这个工作 - 它可能有点乱,但这就是我做的:
NSDictionary *rowData = [self.raceData objectAtIndex:[indexPath row]];
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate* raceDate = nil;
NSError* dateError = nil;
NSRange dateRange = NSMakeRange(0, [[rowData valueForKey:@"race_time"] length]);
[dateFormat getObjectValue:&raceDate forString:[rowData valueForKey:@"race_time"] range:&dateRange error:&dateError];
[dateFormat setDateFormat:@"HH.mm"];
NSString *raceTime = [dateFormat stringFromDate:raceDate];
我现在可以输出raceTime作为独立时间。我不得不使用getObjectValue:forString:range:error:在更改格式并再次解析之前将原始字符串解析为日期。
当我在表格中使用它时,我怀疑我需要使用静态格式化程序,因此它不会减慢一切 - 如果有人能做出最佳实践,我会很感激。
答案 2 :(得分:0)
如果您确定输入字符串格式不会改变 - 您可以使用类似于:
的内容NSString *date = nil;
NSString *time = nil;
NSDictionary *rowData = [self.raceData objectAtIndex:[indexPath row]];
NSString *raceTime = [rowData valueForKey:@"race_time"];
NSArray *dateParts = [raceTime componentsSeparatedByString:@" "];
if ([dateParts count] == 2) {
date = [dateParts objectAtIndex:0];
time = [dateParts objectAtIndex:1];
}