从NSString转换为NSDate并再次返回

时间:2012-11-24 01:52:54

标签: objective-c ios

我知道之前已经问过这个问题(最值得注意的是:Converting NSString to NSDate (and back again)),但我遇到了困难。我正在使用RSS提要解析器,它以这种格式返回日期:

Fri, 23 Nov 2012 15:39:00 -0800

我希望将其转换为以下格式:

Nov. 23 2012

用这样格式化的单独时间:

3:39:00 PM

以下是我目前的代码:

NSString *RSSDate1=@"Fri, 23 Nov 2012 15:39:00 -0800";
NSDateFormatter *RSSDateFormatter = [[NSDateFormatter alloc] init];
[RSSDateFormatter setDateFormat:@"D, d M Y H:i:s O"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [RSSDateFormatter dateFromString:RSSDate1];
[RSSDateFormatter release];
NSDateFormatter *RSSDateFormatter2=[[NSDateFormatter alloc] init];
[RSSDateFormatter2 setDateStyle:NSDateFormatterShortStyle];
UIAlertView *dateAlert=[[UIAlertView alloc] init];
[dateAlert setTitle:[RSSDateFormatter2 stringFromDate:dateFromString]];
[dateAlert addButtonWithTitle:@"Dismiss"];
[dateAlert show];
[dateAlert release];

现在,字符串返回nil,所以我打赌我的格式是关闭的。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试使用此配置的NSDateFormatter将当前日期(现在)转换为NSString并打印出字符串。查看输出的格式并将其与您想要的格式进行比较。这些差异应该可以让您了解需要更改的内容以获得所需的格式。

答案 1 :(得分:0)

将其更改为,

NSString *RSSDate1 = @"Fri, 23 Nov 2012 15:39:00 -0800";
NSDateFormatter *RSSDateFormatter = [[NSDateFormatter alloc] init];
[RSSDateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzzzz"];

NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [RSSDateFormatter dateFromString:RSSDate1];
NSLog(@"dateFromString = %@", dateFromString);    
[RSSDateFormatter release];

NSDateFormatter *RSSDateFormatter2 = [[NSDateFormatter alloc] init];
[RSSDateFormatter2 setDateFormat:@"MMM dd, yyyy hh:mm aaa"];
NSLog(@"dateToString = %@", [RSSDateFormatter2 stringFromDate:dateFromString]);

UIAlertView *dateAlert = [[UIAlertView alloc] init];
[dateAlert setTitle:[RSSDateFormatter2 stringFromDate:dateFromString]];
[dateAlert addButtonWithTitle:@"Dismiss"];
[dateAlert show];
[dateAlert release];

<强>输出:

  

dateToString = 2012年11月23日下午03:39

请注意,“星期五,2012年11月23日15:39:00 -0800”的格式为“EEE,dd MMM yyyy HH:mm:ss zzzzz”和“2012年11月23日03:39 PM”的格式“MMM dd,yyyy hh:mm aaa”。格式中的每个字母代表日期字符串中的相应单词。例如: - EEE用于周五,aaa用于PM等。检查this for more information如何进行格式化。