3

我以为我已经完成了“困难”部分,但似乎并非如此。我从 RSS 提要中检索日期,我想将其转换为 NSDate,然后将其更改为简单格式 (MM/DD/YYYY)。日期在 RSS 提要中采用以下格式:

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 我最终得到空值。当我不使用它时,我会得到正确的日期,只是不是我希望它最终成为的格式。

4

2 回答 2

2

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

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

  • 从 RSS 提要中检索 NSString
  • 创建日期格式化程序
  • 根据字符串的格式设置其格式
  • NSDate从日期格式化程序中获取一个对象
  • 将 的格式重新设置为NSDateFormatter您想要的格式
  • NSString使用日期和日期格式化程序对象获得正确格式化。
于 2012-11-03T15:06:05.100 回答
1

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

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

[dfSimple setTimeStyle:NSDateFormatterNoStyle];

[dfSimple setDateStyle:NSDateFormatterMediumStyle];

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

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

于 2012-11-03T15:08:57.880 回答