comportamento strano con timeIntervalSince1970
-
06-09-2019 - |
Domanda
sto vedendo un comportamento strano con il tentativo di ottenere secondi dal periodo in Objective C. Questo:
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 EST). L'ora di sistema su iPhone è corretta. Io non riesco a capire per la vita di me quello che sto facendo male. Tutti i consigli?
Soluzione
timeIntervalSince1970 restituisce un NSTimeInterval, che è un typedef per doppia; % D non è il formattatore diritto di stampare una doppia (che si desidera% f).
Altri suggerimenti
Mentre il ritorno da [[NSDate date] timeIntervalSince1970];
è un doppio, si potrebbe provare questo:
NSString *nowTimestamp = [NSString stringWithFormat:@"%f",
[[NSDate date] timeIntervalSince1970]];
Sei sicuro che il risultato da NSDate
è un int decimale? La documentazione dicono che è un doppio. Si potrebbe provare a fusione.
Inoltre, a volte si ottiene un valore del 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.