从 String 到 NSDate 的错误转换

Wrong NSDate conversion from String

我有日期(NSDate),

我转换格式为“EEEE,dd MMM YYYY”所以输出是。 “2017 年 5 月 22 日,星期一”

但是当把这个字符串转换成日期时它给出了错误的日期

使用此代码

 NSDateFormatter * formatter = [NSDateFormatter new];
 [formatter setDateFormat:@"EEEE,dd MMM YYYY"];
  NSDate *currentDate = [formatter dateFromString:“Monday,22 May 2017”];

错误的输出是 2016-12-25 18:30:00 +0000

有人可以帮忙吗?

日期没有正确的格式,但在这里使用 yyyy 而不是 YYYY

@"YYYY" is week-based calendar year.

@"yyyy" is ordinary calendar year.

[formatter setDateFormat:@"EEEE,dd MMM yyyy"];

样本

NSDateFormatter * formatter = [NSDateFormatter new];
[formatter setDateFormat:@"EEEE,dd MMM yyyy"];
NSDate *currentDate = [formatter dateFromString:@"Monday,22 May 2017"];

问题出在这一行 [formatter setDateFormat:@"EEEE,dd MMM YYYY"];

yyyy 指定日历年,而 YYYY 指定年份(一年中的一周)。所以你应该使用 yyyy 而不是 YYYY。 所以你的代码会像这样

[formatter setDateFormat:@"EEEE,dd MMM yyyy"];