NSDateFormatter 输出不正确的年份

NSDateFormatter outputting incorrect year

我有一个以毫秒为单位的日期时间戳: 145146240000

我根据该时间戳创建了一个 NSDate 对象:

NSTimeInterval seconds = [@"1451462400000" doubleValue] / 1000.0f;
NSDate *transactionDate = [NSDate dateWithTimeIntervalSince1970:seconds];
NSLog(@"%@", transactionDate);

我记录 transactionDate 的值: 2015-12-30 08:00:00 +0000

然后我使用 NSDateFormatter:

输出这个日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"d MMMM YYYY"];
NSLog(@"%@", [dateFormatter stringFromDate:transactionDate]);

这错误地将年份输出为 2016!

30 December 2016

怎么会这样?我当地的时区是 GMT+2,所以如果有的话,当格式化程序解析时它可能会关闭两个小时,但不会关闭一整年!

请使用 yyyy 作为年份格式,例如

[dateFormatter setDateFormat:@"d MMMM yyyy"];

希望对你有所帮助

更多信息请看

Y returns 2012 while y returns 2011 in SimpleDateFormat