2012-05-27 16 views
53

mio sistema ora data è 26 Maggio 22:55, ma quando ottengo aggiornato con [NSDate date] ora data è 27 Maggio 02:35Ottenere La data e ora con [data NSDate]

è a causa del fuso orario?

se sì come risolvere questo problema, che quando avrò tempo la data, dammi la data del mio sistema e non controlla il fuso orario

+3

Come sono stai determinando quale sia l'oggetto data? Lo stai semplicemente loggando? Se è così, probabilmente stamperà il suo tempo come UTC. Quindi, sì, è il fuso orario. L'oggetto ha la data e l'ora corrette, è solo formattandolo per la visualizzazione in Coordinated Universal Time. –

risposta

121
NSLocale* currentLocale = [NSLocale currentLocale]; 
[[NSDate date] descriptionWithLocale:currentLocale]; 

o utilizzare

NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
// or @"yyyy-MM-dd hh:mm:ss a" if you prefer the time with AM/PM 
NSLog(@"%@",[dateFormatter stringFromDate:[NSDate date]]); 
+6

per i neofiti (e per dichiarare l'ovvio) ... è NSLog, non NSlog nell'ultima riga ... solo un refuso. – fazhool

+5

Un altro piccolo problema. '@" aaaa-MM-gg hh: mm: ss "' non è un bel formato di data, dato che darà 0-12 volte senza suffisso AM/PM. Una migliore è '@" aaaa-MM-gg hh: mm: ss a "' o '@" aaaa-MM-gg HH: mm: ss "' (per formato orario 0-24). – Alvaro

+0

Grazie! Funziona bene. – Raja