NSDateFormatter 转换为 NSString 错误

NSDateFormatter transition to NSString error

这是代码

NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"YYYY-MM-dd"];
NSString * dateNow = [formatter stringFromDate:[NSDate date]];

并且调试器显示

为什么年份是2016?

如下更改 setdateformatter 行,

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

NSDateFormatter 中使用 yyyy 而不是 YYYY 作为

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

why the number of the year is 2016?

原因是:

"YYYY" 是基于周的日历年。

"yyyy"为平历年

2016 年是因为当前周 (2015 年 12 月 27 日) 至 (2016 年 1 月 2 日) 是 2016 年的第一周,基于 YYYY 格式指定的每周日历年。参考:https://en.wikipedia.org/wiki/ISO_week_date