奇怪的NSDateFormatter结果

时间:2014-06-26 22:19:43

标签: objective-c nsdateformatter

为什么地球上的这一年会出现错误?

NSDateFormatter * formatter = [NSDateFormatter new];
formatter.dateFormat = @"YYYY-MM-dd";
NSLog(@"%@", date); // 2013-12-31 00:00:00 +0000
[formatter stringFromDate:date]; // 2014-12-31

我在新年那天和另一个应用程序有类似的问题,现在我再次看到它......很奇怪。

1 个答案:

答案 0 :(得分:4)

因为您可能需要"yyyy"而不是"YYYY"

来自Unicode Date Format Patterns documentation

  

y:年。

     

Y:年份("年度周和#34;基于日历)。 ......并不总是与日历年相同的值。

2013-12-31日期是2014年第一周的一部分,而不是2013年的最后一周。这就是为什么将2014年作为年度组成部分的原因。