2009-05-28 34 views
8

sto vedendo un comportamento strano con il tentativo di ottenere secondi dal periodo in Objective C. Questo:comportamento strano con timeIntervalSince1970

NSString *nowTimestamp = [NSString stringWithFormat:@"%d", 
          [[NSDate date] timeIntervalSince1970]]; 

uscite 15907296, quando il timestamp corrente dovrebbe essere 1.243.555,623 mila (05/28/2009 @ 19:08 pm EST). L'ora del sistema su iPhone è corretta. Non riesco a capire per la vita di me quello che sto facendo male. Qualche consiglio?

risposta

31

timeIntervalSince1970 restituisce un NSTimeInterval, che è un typedef per il doppio; % d non è il formattatore giusto per stampare un doppio (vuoi% f).

+0

Ah, grazie, sapevo che stavo facendo qualcosa di stupido. – Parrots

1

Sei sicuro che il risultato di NSDate è un decimale int? I documenti dicono che è un doppio. Potresti provare a lanciare.

Inoltre, a volte si otterrà un valore di puntatore indietro invece del valore effettivo, se qualcosa è un NSNumber sotto le coperte, potrebbe essere necessario utilizzare intValue, o doubleValue per ottenere l'effettivo contenuto di ciò che è all'indirizzo.

+0

Sì, è necessario% f –

5

Come il ritorno da [[NSDate date] timeIntervalSince1970]; è un doppio, si potrebbe provare questo:

NSString *nowTimestamp = [NSString stringWithFormat:@"%f", 
         [[NSDate date] timeIntervalSince1970]];