NSString到NSDate然后更改格式

时间:2012-11-03 15:01:43

标签: objective-c nsstring nsdate

我以为我已经完成了“硬”部分,但似乎并非如此。我从RSS源中检索一个日期,我想将其转换为NSDate,然后将其更改为简单格式(MM / DD / YYYY)。日期在RSS源上以这种格式出现:

Thu,2012年11月1日17:41:56 CST

我已成功将其转换为NSDate。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"E, d MMM yyyy HH:mm:ss zzz"];
NSDate *date = [[NSDate alloc] init];
//[df setDateStyle:NSDateFormatterMediumStyle]; Using these seems to change what it expects from the string I guess?
//[df setTimeStyle:NSDateFormatterMediumStyle];
date = [df dateFromString:string];
[self.tempItem setPubDate:[df dateFromString:string]];
NSLog(@"%@", [df dateFromString:string]);

所以我的日期很好,但就像我之前说的那样,我想把它转换成一个简单的日期。 当我使用setDateStyle时,我最终得到空值。当我不使用它时,我会得到正确的日期,而不是我希望它最终成为的格式。

2 个答案:

答案 0 :(得分:2)

  

不是我希望它最终成为的格式。

因为NSLog()不知道格式 - 它会怎么样? NSDate没有任何内置的“格式”。您必须再次使用NSDateFormatter从日期对象中获取字符串。基本上你必须使用的工作流程大致是:

  • 从RSS提要中检索NSString
  • 创建日期格式化程序
  • 根据字符串
  • 的格式设置其格式
  • 从日期格式化程序
  • 获取NSDate个对象
  • NSDateFormatter的格式重新设置为您希望的格式
  • 使用日期和日期格式化程序对象获取格式正确的NSString

答案 1 :(得分:1)

只需创建另一个NSDateFormatter即可将NSDate转换为NSString

  

NSDateFormatter * dfSimple = [[NSDateFormatter alloc] init];

     

[dfSimple setTimeStyle:NSDateFormatterNoStyle];

     

[dfSimple setDateStyle:NSDateFormatterMediumStyle];

     

NSLog(@“%@”,[dfSimple stringFromDate:date]);

最好在这种情况下创建2个NSDateFormatter对象