NSDateFormatter错误,一年前返回日期

fan*_*ard 1 nsdate nsdateformatter ios

码:

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
Run Code Online (Sandbox Code Playgroud)

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

Rus*_*shi 6

改变这个:

[formatter setDateFormat:@"YYYY-MM-dd"];
[formatter setDateFormat:@"MMM dd, YYYY"];
Run Code Online (Sandbox Code Playgroud)

至 :

[formatter setDateFormat:@"yyyy-MM-dd"];
[formatter setDateFormat:@"MMM dd, yyyy"];
Run Code Online (Sandbox Code Playgroud)

错误原因,

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