2010-12-17 4 views
10

См. Ниже коды и вывод.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 

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

ответ

16

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

Верхний регистр «Y» - это что-то еще (см. Unicode Date Format Patterns).

+4

+1 В частности, Y является годом текущей недели. Неделя 1 января 2011 года относится к 2010 году, поэтому YYYY производит 2010. – ughoavgfhw 2010-12-17 04:58:39

Смежные вопросы