2013-10-24 16 views
5

Ho diverse stringhe di data che ho bisogno di convertire in NSDates. mio codice di analisi è la seguente:Data NSDateFormatter hardware-dipendenteFromString: bug (restituisce nil)

NSString *s = [pair objectForKey:@"nodeContent"]; 
NSDateFormatter *f = [[NSDateFormatter alloc] init]; 
[f setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZ"]; 
self.date = [f dateFromString:s]; 

Il codice di cui sopra funziona bene in tutti i dispositivi e simulatori che abbiamo testato. La cosa strana è che quando il codice sopra indicato viene eseguito su qualsiasi iPhone 5 con iOS 6.1 o 7.0.x, la riga self.date = [f dateFromString:s]; restituisce zero ogni volta.

Ho controllato e la stringa s esiste e contiene gli stessi caratteri se confrontata con un dispositivo che analizza correttamente la data.

Questa è una stringa esempio la data: `2013-10-31T21: 50: 00-06: 00'

mi manca qualcosa qui?

+0

quantificare * qualsiasi *. Potrebbe essere un problema con il locale? –

+0

possibile duplicato di [Qual è il modo migliore per gestire la "funzionalità" delle impostazioni locali NSDateFormatter?] (Http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with- the-nsdateformatter-locale-feature) –

risposta

12

È perché non si impostano le impostazioni internazionali del programma di formattazione per la locale speciale en_US_POSIX. Molto probabilmente il tuo iPhone 5 ha un'impostazione diversa per l'impostazione di 24 ore.

È necessario impostare le impostazioni internazionali speciali ogni volta che si analizza una stringa di formato fissa.

+3

Grazie. Ho aggiunto la riga '[f setLocale: [NSLocale localeWithLocaleIdentifier: @" en_US_POSIX "]];' e funziona ora. – user2917941

Problemi correlati