2012-06-06 6 views
7

I get start_times e end_times sotto forma di NSDecimalNumber s indietro da una richiesta API.Conversione di un timestamp unix in NSdate utilizzando il fuso orario locale

Sono riuscito con successo a convertire questi NSDecimalNumber s in NSDate s, ma il codice non sta prendendo fusi orari in considerazione.

Ho bisogno che utilizzi il fuso orario predefinito sul dispositivo.

+0

Possibile duplicato di [convertire epoch time in NSDate in cacao/iPhone] (http://stackoverflow.com/q/2609561/608157) –

+0

Un altro possibile duplicato è [Converti ora epoca in NSDate con un buon fuso orario con Obiettivo c] (http: //stackoverflow.com/q/6655446/608157) –

+1

Ci sono ot anche lei ... usa il campo di ricerca nell'angolo in alto a destra prima di fare domande. È il primo argomento sulla pagina ["Come chiedere"] (http://stackoverflow.com/questions/how-to-ask) –

risposta

28

Questo dovrebbe fare quello che ti serve con locale corrente

double unixTimeStamp =1304245000; 
NSTimeInterval _interval=unixTimeStamp; 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval]; 
NSDateFormatter *formatter= [[NSDateFormatter alloc] init]; 
[formatter setLocale:[NSLocale currentLocale]]; 
[formatter setDateFormat:@"dd.MM.yyyy"]; 
NSString *dateString = [formatter stringFromDate:date]; 
9

tempo Unix doesn't have a time zone. è definito in UTC, come il numero di secondi a partire dalla mezzanotte 1 gennaio 1970.

si dovrebbe ottenere il NSDates nel fuso orario corretto utilizzando

[NSDate dateWithTimeIntervalSince1970:myEpochTimestamp]; 
+0

Ciao David, quale è corretto il tuo o quello accettato? – Hemang

+0

Entrambe le risposte fanno lo stesso quando si tratta di creare l'oggetto data. Il resto è solo formattazione. –

+0

Grazie per la risposta, ma sono solo preoccupato per questa riga '[formatter setLocale: [NSLocale currentLocale]]; l'output potrebbe essere diverso? – Hemang

7

provare qualcosa di simile ..

NSDate* sourceDate = ... // your NSDate 

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone]; 

NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate]; 
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate]; 
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset; 

NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease]; 
Problemi correlati