将 NSDate 转换为格式 "MMM, YYYY" 时 NSDateformatter 出现问题

Issue with NSDateformatter while converting NSDate to format "MMM, YYYY"

我的 NSDate 的值为 2015-12-27 +0000,当我将此 NSDate 转换为 NSString 格式 MMM, YYYY 时,我得到:

NSString 为 Dec, 2016

这是因为日期格式中的大写 Y 指定的是 ISO week date system 中的年份,而不是公历。

我想您的代码可能类似于:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMM, YYYY"];
NSLog(@"Date: %@", [df stringFromDate:yourDate]);

改为尝试使用格式:

[df setDateFormat:@"MMM, yyyy"];

当使用诸如此类的格式字符串来指定输出格式时,NSDateFormatter 使用 Unicode Technical Standard #35 中的约定(如果您需要更多详细信息,它描述了 Y 和 y 之间的区别)。