ios4 - 将字符串中的日期和时间拆分为两个单独的字符串

时间:2012-01-16 17:12:29

标签: ios4 nsdateformatter

我有一个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。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:0)

也许格式应该更像

[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];

查看http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html

可能会清除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];
}
相关问题