Подтвердить что ты не робот

NSDateFormatter показывает неправильный год

im, используя xcode 4.5 (4G182) с iOS 6. NSDateFormatter показывает неправильный год в iOS 6, как решить?

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"YYYY-MM-dd"];
NSString *str = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@ == %@",str,[[dateFormatter dateFromString:str] description]);

распечатать " 2012 -09-14 == 2011 -09-13 16:00:00 +0000"

4b9b3361

Ответ 1

YYYY не то же самое, как yyyy.

Согласно этой странице, на которую ссылается страница формата даты iOS;

'y': Year
'Y': Year (in "Week of Year" based calendars). This year designation is used in 
     ISO year-week calendar as defined by ISO 8601, but can be used in 
     non-Gregorian based calendar systems where week date processing is desired. 
     May not always be the same value as calendar year.

Оперативное предложение является последним. Используйте вместо этого yyyy.


Дополнительные сведения о том, как и почему значения года могут отличаться при использовании YYYY:

Год нумерации ISO начинается в первый день (понедельник) недели 01 и заканчивается в воскресенье перед новым годом ISO (следовательно, без наложения или разрыва). Он состоит из 52 или 53 полных недель. Номер года нумерации недели ISO отличается от номера традиционного григорианского календарного года в пятницу, субботу и воскресенье, либо в субботу и воскресенье, либо просто в воскресенье в начале традиционного григорианского календарного года ( конец предыдущего года нумерации ISO) и понедельник, вторник и среда, или понедельник и вторник, или просто понедельник в конце традиционного григорианского календарного года (который находится на неделе 01 следующей недели ISO) год нумерации). Для четвергов номер года в неделю по ISO всегда равен номеру традиционного григорианского календарного года.

Примеры:

Понедельник 29 декабря 2008 написано " 2009 -W01-1"

Воскресенье 3 января 2010 написано " 2009 -W53-7"

С https://en.wikipedia.org/wiki/ISO_8601#Week_dates (добавлен жирный стиль)