2012-02-13 9 views
5

Ho questo blocco di codice da leggere nella specifica di data/ora ISO 8601. Il problema è che per qualche ragione, il mese non funziona. Ogni volta che lo converto, il mese è "01". Che cosa sto facendo di sbagliato?NSDateFormatter sembra avere il mese sbagliato

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]); 

Così, per esempio, se dateString era:

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

mia uscita sarebbe:

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

Le cose che ho già provato:

  • Cambiato MM LL
  • Provato senza setCalendar/setLocale
  • provato con 'intorno al -
  • posizione commutata di MM intorno ad altri luoghi. Non cambia mai nulla.
  • Sembra tutto SO e sembra funzionare per tutti gli altri.
+2

Questo non può cambiare nulla, ma penso che l'identificatore di formato 'DD' dovrebbe essere' dd'. – dasblinkenlight

risposta

15

Prova questa

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

DD è il "Giorno dell'anno", non il "giorno di un mese". Un'ottima fonte per cercare i formati NSDateFormatter è this table

+1

wow ... Allora perché nel mondo era il DD che impediva a MM di funzionare? Non sembra che dovrebbe accadere. Ma grazie mille! –

+0

"questo tavolo" è incredibile! Questa dovrebbe essere la documentazione di Apple. – Lewis42

+0

Uomo fantastico. Grazie mille ! –

Problemi correlati