NSDateFormatter输出错误的年份

时间:2016-01-12 12:58:03

标签: ios objective-c nsdate nsdateformatter

我有一个以毫秒为单位的日期时间戳: 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

这怎么可能?我当地的时区是格林尼治标准时间+2,所以如果格式化程序解析它可能会被两个小时关闭,但不是整整一年!

1 个答案:

答案 0 :(得分:2)

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

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

我希望它会对你有所帮助。

了解更多信息,请查看

Y returns 2012 while y returns 2011 in SimpleDateFormat