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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top