NSDateFormatter mostrar mal año


Estoy usando xcode 4.5(4G182) con iOS 6. NSDateFormatter mostrar mal año en iOS 6, cómo resolver?

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

Se imprima "2012-09-14 == 2011-09-13 16:00:00 +0000"

Author: Simon, 2012-09-14

1 answers

YYYY no es lo mismo que yyyy.

De acuerdo con esta página a la que hace referencia IOS Date format page;

`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.

La frase operativa es la última. Use yyyyen su lugar.


Más detalles sobre cómo y por qué los valores del año pueden desviarse cuando se usa YYYY:

El año de numeración de la semana ISO comienza el primer día (lunes) de la semana 01 y termina en el domingo antes del nuevo año ISO (por lo tanto, sin solapamiento o brecha). Consiste en de 52 o 53 semanas completas. ISO semana-numeración número del año se desvía del número de la tradicional Año calendario gregoriano en un viernes, sábado y domingo, o un Sábado y domingo, o simplemente un domingo, al inicio de la tradicional Año natural gregoriano (que se encuentran al final de la ISO anterior semana-año de numeración) y un lunes, Martes y miércoles, o un lunes y el martes, o solo un lunes, al final de la tradicional Gregoriana año civil (que están en semana 01 de la próxima semana ISO-numeración año). Para los jueves, el número de la semana-numeración del año de ISO es siempre igual al número tradicional del año calendario gregoriano.

Ejemplos:

Lunes 29 de diciembre 2008 está escrito "2009-W01-1 "

Domingo 3 de enero 2010 está escrito "2009-W53-7 "

De https://en.wikipedia.org/wiki/ISO_8601#Week_dates (estilo en negrita añadido)

 100
Author: Joachim Isaksson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-18 16:08:38