2014-06-13 42 views
1

我想格式化從RSS提要拉的博客文章的日期以顯示在表單元格中。我將字符串「dateString」設置爲等於從XML解析器接收到的日期並記錄結果。然後,我將日期轉換爲新格式,將其記錄到控制檯,然後收到「空」。這反過來給我一個0的時間間隔,並在我的手機顯示「秒前」。我認爲我的日期格式可能存在錯誤,但我查了很多來源。錯誤格式化時間objective-c

NSString *dateString = nil; 
dateString = [datearray objectAtIndex:indexPath.row]; 
NSLog(@"Date Posted: %@", dateString);//Log date posted 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"]; 
NSDate *date = [dateFormat dateFromString:dateString]; 
NSLog(@"New Date: %@", date);//Log date posted 
NSTimeInterval timeInterval = [date timeIntervalSinceNow]; 
NSLog(@"Time interval %f", timeInterval); 
NSString *newTime = [timeIntervalFormatter stringForTimeInterval:timeInterval]; 
NSLog(@"New Time %@", newTime); 
cell.dateLabel.text = [NSString stringWithFormat:@"%@", newTime]; 

控制檯登錄:

2014-06-13 15:43:41.555 Cazenovia High School[13489:60b] Date Posted: Thu, 22 Aug 2013 13:33:44 +0000 
2014-06-13 15:43:41.556 Cazenovia High School[13489:60b] New Date: (null) 
2014-06-13 15:43:41.557 Cazenovia High School[13489:60b] Time interval 0.000000 
2014-06-13 15:43:41.558 Cazenovia High School[13489:60b] New Time seconds ago 

編輯: 添加以下行,但仍然沒有改變...

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[dateFormat setLocale:locale]; 

enter image description here

+0

嘗試設置的日期格式的區域設置en_US_POSIX'的'特殊語言環境。 – rmaddy

+0

@rmaddy我上面做了編輯,仍然沒有改變。 – SuperAdmin

+0

在我身邊,這是控制檯日誌在複製和粘貼代碼後所保存的內容:'New Date:2013-08-22 13:33:44 + 0000'和'Time interval -25591284.694682'。這對我來說是正確的。什麼是實際的'locale'? – holex

回答

1

這是運行後很清楚該項目,因爲它似乎有一個額外的新線字符在dateString的尾部。

從技術上講,您正在使用的字符串是"Thu, 22 Aug 2013 13:33:44 +0000\0x0a",這就是爲什麼解析器無法使用該格式化程序使用它。


我已經修改了格式化,以EEE, dd MMM yyyy HH:mm:ss ZZZ\n,現在正常工作,這是我的控制檯的樣子:

enter image description here