2012-01-16 18 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]; 
} 
相關問題