ios - NSDateFormatter错误,返回日期一年前

标签 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错误?

最佳答案

改变这个:

[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产生相同的结果
数字,但是它们可能不同。通常,您应该使用
公历年。

关于ios - NSDateFormatter错误,返回日期一年前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104564/

相关文章:

android - Ionic 2 Firebase initializeApp 和 onAuthStateChanged 慢

iphone - 如何在导航栏上添加带有动画的广告?

ios - 翻转后 UIView 的框架发生变化

iphone - 如何创建一个完整的 NSDate 对象来表示下一个指定的日期时间?

ios - 将NSDate转为UTC字符串再转回NSDate,结果不一样

ios - 如何使用 cookie 发出 NSURLSession GET 请求

ios - Calendar.components 不能与 Swift 3 中的数组文字一起使用

ios - Dateformatter 给出了错误的对话时间

ios - NSDateFormatter 不适用于 1970 年之前的日期?

swift - NSDateFormatter 给我一周中不同的两天,同一日期