2012-12-25 124 views
0

我在我的應用程序中使用了AFFeedParser來解析來自不同HTML頁面的文章。更改日期格式爲iPhone中的特殊格式

通過分析,我得到了寫article DATE like

"Thu, 06 Dec 2012 17:44:22 +0000\n\t\t"爲字符串。

如何將其轉換成像Thursday,December 06,2012這樣的日期?

+1

谷歌或SO,數以千計的類似這樣的回答是有..或檢查的NSDate文檔https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes /NSDate_Class/Reference/Reference.html –

+0

你可以檢查我的答案與ios不兼容。 –

回答

1

,請參看日誌還,我知道了......

NSString *yourStringDate = @"Thu, 06 Dec 2012 17:44:22 +0000\n\t\t"; 
    NSString *str =[yourStringDate stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

    str =[str stringByReplacingOccurrencesOfString:@"\t" withString:@""]; 
    [str retain]; 

    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"]; 

    NSDate *date = [dateFormatter dateFromString: str]; 

    dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setDateFormat:@"EEEE,LLLL dd,yyyy"]; 

    NSString *convertedString = [dateFormatter stringFromDate:date]; 
    NSLog(@"Converted String : %@",convertedString); 

輸出是:轉換後的字符串:週四,06,2012十二月

也看到我的另一個答案爲GET的NSDate從字符串但在這一點上,你只是像上面設置你的格式,只是改變格式從... convert-string-to-nsdate-with-custom-format

我希望這對你有所幫助....

+0

我變得空作爲轉換的字符串 – user1673099

+0

@ user1673099看到這給了正確的輸出,只需複製並粘貼此代碼在您的方法或viewWillAppear也... :)我編輯整個代碼花花公子...現在複製並使用它。 .. –

+0

在這裏你得到空值bcoz我們沒有爲它的夥計設置適當的格式... –

0

找到了答案:

NSString *[email protected]"Thu, 06 Dec 2012 17:44:22 +0000\n\t\t"; 
NSString *trimDate=[[inputDate componentsSeparatedByString:@"+"]objectAtIndex:0]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss"]; 

NSDate *date = [dateFormatter dateFromString:trimDate]; 

[dateFormatter setDateFormat:@"EEEE, MMMM dd,yyyy"]; 
NSString *dateString = [dateFormatter stringFromDate:date]; 

NSLog(@"dateString = %@", dateString); 

輸出:

dateString = Thursday,December 06,2012 
+0

第2行的解釋:他創建了一個由「\」分隔的「NSArray」,它返回「Thu,2012年12月6日17:44:22 +0000」,「n」,「t」, 「t」並選擇第一個元素。 –

+0

否.... @「\」無法使用,所以@「\\」一個額外\被用作轉義字符。然後星期四,'06 Dec 2012 17:44:22 + 0000'被存儲在存儲在trimDate中的數組的第一個索引(即0)中,之後它很簡單。 –

+0

正如你所看到的,我翻譯了@「\\」給人類「\」,這更容易理解,因爲不是每個人都知道什麼是嚴格意義上的手段。其次,我嘗試創建一個包含4個元素的僞數組:1:「Thu,2012年12月6日17:44:22 +0000」| 2:「n」| 3:「t」| 4:「t」。 (對不起,我的第一條評論中的「+0000」出現在下一行) –

2
NSString *[email protected]"Thu, 06 Dec 2012 17:44:22 +0000\n\t\t"; 
NSString *getDate=[[dateStr componentsSeparatedByString:@"\\"]objectAtIndex:0]; 

在這裏,你應該照顧的日期和時間的本地代表的,所以你應該使用。

NSDateFormatter dateFormat = [NSDateFormatter dateFormatFromTemplate:@"yMMMMd" options:0 locale:[NSLocale systemLocale]]; 

NSDate *date=[dateFormat dateFromString:getDate]; 

NSLog(@"dateString = %@", [dateFormat stringFromDate:date]);