2009-11-26 9 views
5

Sto usando NSDateFormatter, il problema è con la sua consistenza. Se uso il kCFDateFormatterMediumStyle fornisce il formato "Nov 26, 2009" nel simulatore ma sul dispositivo fornisce "26-Nov-2009".NSDateFormatter fornisce valori diversi su dispositivo e simulatore? Che cosa funziona?

Ora ho la domanda, questo NSFormatter è affidabile nel prossimo futuro o gli aggiornamenti di Apple possono cambiare di nuovo lo stile?

+0

La sintesi delle risposte è impostare il formato data di NSDateFormatter non lo stile di data per consistenza –

risposta

3

NSDateFormatter formatta la data in base alle preferenze dell'utente, in base alle impostazioni internazionali sul dispositivo. Come tale, non ci si può mai aspettare che questa stringa sia coerente a causa della quantità di modi diversi in cui le date vengono visualizzate in tutto il mondo.

Ho trovato il modo migliore per formattare una data come stringa (da usare per dare ai server web, ecc.) È quello di utilizzare NSDateComponents e convertirli in stringhe.

+3

Questo non è corretto al 100%. NSDateFormatter si formatta in base alle preferenze dell'utente, sì, ma solo quando si specificano impostazioni come kCFDateFormatterMediumStyle. Se lo desideri, puoi facilmente impostare una stringa di formato esatta. –

17

Mentre l'altra risposta di cui sopra è tecnicamente corretta, non offre la soluzione che si sta cercando. Mentre le impostazioni predefinite NSDateFormatter di utilizzare impostazioni internazionali utente (ed è, come tale, non andare a dare risultati utili) è possibile richiedere una versione locale specifica per ottenere risultati coerenti:

NSDateFormatter *frm = [[NSDateFormatter alloc] init]; 
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 

NSLocale *en_US = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[frm setLocale:en_US]; 
[en_US release]; 
Problemi correlati