NSDateFormatter错误,一年前返回日期

时间:2013-02-27 05:01:43

标签: ios nsdate nsdateformatter

代码:

NSString *ds = @"2013-02-25";
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd"];
NSDate* date = [formatter dateFromString:ds];
NSLog(@"%@", date); //2012-02-24 16:00:00 +0000
[formatter setDateFormat:@"MMM dd, YYYY"];
NSLog(@"%@", [formatter stringFromDate:date]); //Feb 25, 2012

我做错了吗?还是iOS 6 SDK的bug?

1 个答案:

答案 0 :(得分:6)

改变这个:

[formatter setDateFormat:@"YYYY-MM-dd"];
[formatter setDateFormat:@"MMM dd, YYYY"];

致:

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

错误原因,

  

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