2011-11-18 17 views
17

Ya he intentado las sugerencias en otras publicaciones similares a esta sin ningún resultado. Aquí está la situación:NSDateFormatter dateFromString da la fecha incorrecta

Tengo una NSString así:

Fri November 18, 2011 

y yo estoy tratando de convertir eso en una fecha como esta:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"EE MMMM d, YYYY"]; 
    NSDate *myDate = [df dateFromString: dateString]; 

Pero la variable myDate resultante ejerce en este :

2010-12-31 00:00:00 +0000 

¿Alguien tiene alguna idea de por qué se elige la fecha incorrecta de la fechaFr omString? La cadena es el 18 de noviembre, la fecha convertida es el 31 de diciembre ...

¡Gracias a todos!

+1

Debe registrar el valor de dateString para asegurarse de que es lo que espera. También intente usar "EEE" en lugar de "EE", "dd" en lugar de "d", e "yyyy" en lugar de "YYYY" para descartar cualquier rareza (aunque parezca que debería funcionar) –

+0

Gracias Tim - 'EEE MMMM d, yyyy' funciona :-) – sweaves

Respuesta

48

Necesita usar yyyy para el año, no YYYY.

Desde el Apple reference:

Un error común es utilizar AAAA. yyyy especifica el año calendario, mientras que YYYY especifica el año (de "Semana del año"), que se utiliza en el calendario anual de ISO. En la mayoría de los casos, aaaa y YYYY producen el mismo número, sin embargo, pueden ser diferentes. Por lo general, debe usar el año calendario.

Y para ser correcto, también tiene que cambiar EE a EEE. Aunque producen el mismo resultado en mi prueba.

+1

Cambiar el YYYY a aaaa y el EE a EEE funcionó a la perfección, ¡gracias! – sweaves

+1

¡Gran pista, gracias! – Chengjiong

+0

esto funcionó !! pero está ocurriendo algo inusual ... utilicé este formato para imprimir todas las fechas en el año 2013 ... solo el 29,30,31 de diciembre de 2013 se mostró como diciembre, 29,30,31 2014 ... ¿raro? – iosMentalist

1

Creo que necesita "EEE MMMM d, YYYY", es decir, triple E como cadena de formato. Si esto no funciona, recomiendo usar cadenas codificadas con fechas y formatos más fáciles para analizar el problema. Consulte, por ejemplo, NSDateFormatter not working para obtener más sugerencias sobre ese tema.

+0

Cambiar el EE a EEE fue la primera parte del problema resuelto, ¡muchas gracias! – sweaves

Cuestiones relacionadas