2012-12-25 89 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]);