NSDateFormatter + dateFormatFromTemplate: options: locale: BUG?

См. ниже коды и вывод.

 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);

Что вы ожидаете от вывода?

 Happy New Year: Jan 1, 2011

Но результат...

 Happy New Year: Jan 1, 2010

Что случилось? Пожалуйста, помогите...

Ответ 1

Строка формата шаблона должна быть @"yyyyMMMd" (нижний регистр "y" для года).

Верхний регистр "Y" - это что-то другое (см. Шаблоны формата даты Unicode).