Merkwürdiges Verhalten mit timeIntervalSince1970
-
06-09-2019 - |
Frage
Ich sehe ein seltsames Verhalten mit dem Versuch, Sekunden seit Epoche in Ziel C. Diese zu erhalten:
NSString *nowTimestamp = [NSString stringWithFormat:@"%d",
[[NSDate date] timeIntervalSince1970]];
Ausgänge 15907296, wenn der aktuelle Zeitstempel 1243555623 (2009.05.28 @ 7.08 EST) sein sollte. Die Systemzeit auf dem iPhone ist korrekt. Ich kann nicht für das Leben von mir herauszufinden, was ich falsch mache. Alle Empfehlungen?
Lösung
timeIntervalSince1970 gibt einen NSTimeInterval, die ein typedef für doppelt so hoch ist; % D ist nicht der richtige Formatierer ein Doppel zu drucken (Sie wollen% f).
Andere Tipps
Da die Rückkehr von [[NSDate date] timeIntervalSince1970];
eine doppelt so hoch ist, könnten Sie versuchen, diese:
NSString *nowTimestamp = [NSString stringWithFormat:@"%f",
[[NSDate date] timeIntervalSince1970]];
Sind Sie sicher, dass das Ergebnis von NSDate
eine Dezimalzahl int? Die docs sagen, es ist ein doppelt so hoch ist. Sie könnten versuchen, Gießen.
Auch, manchmal werden Sie einen Zeigerwert zurück, anstatt den tatsächlichen Wert, wenn etwas ein NSNumber
unter der Decke ist, müssen Sie intValue
verwenden, oder doubleValue
den tatsächlichen Inhalt zu bekommen, was an der Adresse ist.