2013-05-09 58 views
0

我不能讓NSDate爲我的生活工作,即使我認爲我已經掃描堆棧溢出的問題,所以幫助將不勝感激。字符串NSDate問題

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSString *publishedText = [NSString stringWithFormat:@"%@", feedLocal.published]; 
cell.publishedLabel.text = publishedText; 
    return cell; 
} 

給我的字符串:

2013-05-08 18:09:37 +0000 

這我想變成:五月 8,2013 6:45 PM

我已經嘗試使用:

NSString *publishedText = [NSString stringWithFormat:@"%@", feedLocal.published]; 
    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSSSSS"]; 
    NSDate *dateFromString = [[NSDate alloc] init]; 
    dateFromString = [df dateFromString:publishedText]; 
    cell.publishedLabel.text = dateFromString; 

但它不起作用,並顯示指針類型不兼容的警告(NSStringNSDate_strong)。謝謝您的幫助!

+0

這很愚蠢:'NSDate * dateFromString = [[NSDate alloc] init];'。爲什麼要初始化一個變量,然後在下一個語句中覆蓋該值? – 2013-05-09 22:46:39

+0

是的,我不認爲這是正確的。 @rmaddy給了我一個完美的答案,幫助我完成下面的工作 – Realinstomp 2013-05-09 23:06:34

+0

@熱舔酷評論bro – 2014-07-25 16:03:53

回答

2

從您發佈的東西,它會出現feedLocal.publishedNSDate

因爲你的目標是在此日期轉換爲字符串,你需要的東西是這樣的:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"MMMM d, yyyy h:mma"]; // this matches your desired format 
NSString *dateString = [df stringFromDate:feedLocal.published]; 
cell.publishedLabel.text = dateString; 

由於您的應用程序可以通過人們在世界各地被使用的話,建議您設置您的日期格式類似這個:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateStyle:NSDateFormatterLongStyle]; 
[df setTimeStyle:NSDateFormatterShortStyle]; 

做到這一點,而不是設置一個特定的日期格式。然後,日期和時間將顯示爲適用於您的應用的所有用戶,而不僅僅是特定國家/地區的用戶。

3

您分配一個NSDateNSStringcell.publishedLabel.text = dateFromString;(我假設cell.publishedLabel.textNSString

編輯

我沒有測試這個代碼,但我想輸出應該是確定的,如果不請請檢查iOS date formatting guide

因此,在解析字符串並創建NSDate實例後,請添加以下代碼:

EDIT 2 - 全碼

NSString *publishedText = [NSString stringWithFormat:@"%@", feedLocal.published]; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss z"]; 
NSDate *dateFromString = [df dateFromString:publishedText]; 

NSDateFormatter *secondDateFormatter= [[NSDateFormatter alloc] init]; 
[secondDateFormatter setDateStyle:NSDateFormatterLongStyle]; 
cell.publishedLabel.text = [secondDateFormatter stringFromDate:dateFromString]; 
+0

感謝您的回覆!是的,'cell.publishedLabel.text'是一個'NSString',但我想要的格式不同,我不知道如何得到這個工作? – Realinstomp 2013-05-09 21:57:17

+0

請檢查我編輯的回覆。 – danypata 2013-05-09 22:04:55

+0

您是否將其與我的一些代碼結合在一起,還是您正在使用的3行?因爲這三條線對我來說不起作用,但我無法弄清楚還有什麼其他的暗示將它們結合在一起呢? – Realinstomp 2013-05-09 22:15:23