NSDateFormatter dateFromString给出了错误的date

我已经在其他类似的post尝试了build议,没有用。 情况如下:

我有一个这样的NSString:

Fri November 18, 2011 

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

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

但是由此产生的myDatevariables包含这个:

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

有没有人有任何想法为什么从dateFromString中挑出错误的date? string是11月18日,转换date是12月31日…

感谢大家!

你需要使用yyyy一年,而不是YYYY

从苹果引用 :

一个常见的错误是使用YYYY。 yyyy指定日历年,而YYYY指定ISO年份周历中使用的年份(“年份”)。 在大多数情况下,yyyy和yyyy的数字相同,但是可能不同。 通常你应该使用日历年。

而且要正确,你也必须把EE改成EEE 。 虽然他们在我的testing中得到了同样的结果。

我认为你需要“EEE MMMM d,YYYY”,即三重E作为格式string。 如果这不起作用,我build议使用硬编码的string,更简单的date和格式来解决问题。 例如,请参阅NSDateFormatter不适用于该主题的更多提示。