2012-02-13 23 views
5

Tengo este bloque de código para leer en la especificación de fecha/hora ISO 8601. El problema es que, por alguna razón, el mes no funciona. Cada vez que lo convierto, el mes es "01". ¿Qué estoy haciendo mal?NSDateFormatter parece tener el mes incorrecto

NSDateFormatter *UTCDateFormat = [[NSDateFormatter alloc] init]; 
[UTCDateFormat setDateFormat:@"yyyy-MM-DD'T'HH:mm:ss'Z'"]; 
[UTCDateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
[UTCDateFormat setCalendar:[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]]; 
[UTCDateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
NSLog(@"%@", [UTCDateFormat dateFromString:dateString]); 

Así, por ejemplo, si DateString era:

@"2002-03-12T21:13:27Z" 

mi salida sería:

2002-01-12 21:13:27 +0000 

cosas que ya he intentado:

  • MM cambiado a LL
  • Probado sin setCalendar/setLocale
  • intentado con 'alrededor de -
  • posición de MM cambiada a otros lugares. Nunca cambia nada.
  • Visto todo el SO y parece funcionar para todos los demás.
+2

Esto puede no cambiar nada, pero creo que el especificador de formato 'DD' debe ser' dd'. – dasblinkenlight

Respuesta

15

probar este

[UTCDateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"]; 

DD es el "Día del año" no es el "Día de un mes". Una gran fuente para buscar formatos NSDateFormatter es this table

+1

wow ... Entonces, ¿por qué en el mundo estaba el DD que impedía que MM funcionara? No parece que eso debería suceder. ¡Pero muchas gracias! –

+0

'esta tabla' es increíble! Esa debería ser la documentación de Apple. – Lewis42

+0

Hombre fresco. Muchas gracias ! –

Cuestiones relacionadas