从String转换错误的NSDate

时间:2017-09-27 13:17:38

标签: ios objective-c nsdate nsdateformatter

我有约会(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

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

日期没有正确的格式,但在此使用yyyy代替YYYY

  

@“YYYY”是以周为基础的日历年。

     

@“yyyy”是普通日历年。

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

表示样本

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

答案 1 :(得分:-1)

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

yyyy指定日历年,而YYYY指定年份(年份周)。因此,您应该使用yyyy而不是YYYY。 所以你的代码将是这样的

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