NSDateFormatter + dateFormatFromTemplate:options:locale:BUG?

alf*_*oro 10 iphone nsdateformatter

请参阅以下代码和输出.

 NSDateComponents *dateComponents = [[[NSDateComponents alloc] init] autorelease];
 [dateComponents setYear:2011];
 [dateComponents setMonth:1];
 [dateComponents setDay:1];

 NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:dateComponents];

 NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"YYYYMMMd" options:0 locale:[NSLocale currentLocale]]];

 NSString *dateString = [dateFormatter stringFromDate:date];

 NSLog(@"Happy New Year: %@", dateString);
Run Code Online (Sandbox Code Playgroud)

你对输出有什么期望?

 Happy New Year: Jan 1, 2011
Run Code Online (Sandbox Code Playgroud)

但结果是......

 Happy New Year: Jan 1, 2010
Run Code Online (Sandbox Code Playgroud)

怎么了?请帮忙...

小智 16

模板格式字符串应为@"yyyyMMMd"(年份小写"y").

大写"Y"是其他内容(请参阅Unicode日期格式模式).

  • +1具体来说,Y是本周的年份.2011年1月1日这一周属于2010年,所以YYYY产生2010年. (4认同)