2012-01-16 38 views
0

我有一个JSON饲料进入我的应用程序,其中一个字段是我需要分割成离散的日期和时间字符串组合日期&时间字符串显示在表格单元格中。从JSON输入的一个例子是:的iOS4 - 拆分一个字符串的日期和时间为两个单独字符串

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只是空。

任何帮助表示赞赏。

回答

0

也许格式应该更像

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

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

可以明确的事情了升技

+0

的一点是,我不想的日期出现在该字符串,但我需要它出现在其他地方,所以就分开喜欢另一个,所以我可以输出他们一个NSString的日期和时间。 – Dave 2012-01-17 10:53:39

+0

上面链接有一个名为分析日期字符串标题。 “getObjectValue:forString:range:error:方法允许您指定要解析的字符串的子范围,并返回实际解析的字符串范围。”请问你想要什么 – glogic 2012-01-17 11:10:05

+0

谢谢,这指出我在正确的方向 - 我现在工作,并发布了我自己的答案 – Dave 2012-01-17 11:45:41

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]; 

我现在可以输出raceT作为一个独立的时间。我不得不使用getObjectValue:forString:范围:错误:更改格式,并再次解析它之前分析的原始字符串的日期。

正如我在表中使用这个,我怀疑我需要使用一个静态格式化程序,所以它不会放慢速度 - 如果任何人都可以给我一个最佳做法,我会很感激。

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]; 
} 
相关问题