NSDateFormatter dateFromString给出错误的日期

时间:2011-11-18 17:58:39

标签: iphone ios nsdateformatter

我已经在其他类似的帖子中尝试了这些建议但没有用。情况如下:

我有一个像这样的NSString:

Fri November 18, 2011

我试图将其转换为这样的日期:

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"EE MMMM d, YYYY"];
    NSDate *myDate = [df dateFromString: dateString];

但是生成的myDate变量保存了这个:

2010-12-31 00:00:00 +0000

有没有人知道为什么从dateFromString中挑出错误的日期?该字符串是11月18日,转换日期是12月31日...

谢谢大家!

2 个答案:

答案 0 :(得分:48)

您需要使用yyyy年,而不是YYYY

来自Apple reference

  

常见的错误是使用YYYY。 yyyy指定日历年,而YYYY指定ISO年度日历中使用的年份(“年度周”)。在大多数情况下,yyyy和YYYY会产生相同的数字,但它们可能会有所不同。通常,您应该使用日历年。

为了更正,您还必须将EE更改为EEE。虽然他们在我的测试中产生了相同的结果。

答案 1 :(得分:1)

我认为您需要“EEE MMMM d,YYYY”,即三E作为格式字符串。如果这不起作用,我建议使用更简单的日期和格式的硬编码字符串来解决问题。有关该主题的更多提示,请参阅NSDateFormatter not working