7 Stimmen

[[NSDate date]timeIntervalSince1970] scheint 1 Stunde hinterher zu sein

Ich schreibe eine Anwendung, die mit einigen Webdiensten kommuniziert. Wenn eine Variable auf dem Server aktualisiert wird, wird sie einen Unix-Zeitstempel zurückgeben, um mir zu sagen, wann sie aktualisiert wurde. Ich kann sie dann mit vergleichen:

[[NSDate date]timeIntervalSince1970] 

um die Dinge zu synchronisieren.

Die Systemzeit auf dem iPhone ist korrekt. Aber die Unix-Zeit scheint 1 Stunde hinter der des Servers (und der Systemzeit, die auf der Uhr angezeigt wird) zurückzubleiben. Woran liegt das? Muss ich eine Zeitzone einstellen?

14voto

Tommy Punkte 98519

timeIntervalSince1970 zurückgegeben werden soll:

Das Intervall zwischen dem Empfänger und dem Referenzdatum, dem 1. Januar 1970, GMT.

Ist es möglich, dass Sie mit einer Zeit vergleichen, die für den 1. Januar 1970 in einer anderen Zeitzone definiert ist? Wenn ja, dann ist es am einfachsten, wenn Sie timeIntervalSinceDate: statt timeIntervalSince1970 und hat möglicherweise die NSDate's dateByAddingTimeInterval: um vom Bezugsdatum in GMT zum Bezugsdatum in Ihrer idealen Zeitzone zu wechseln.

Sie können die NSTimeZone-Funktion secondsFromGMTForDate: Eigenschaft, wenn Sie die Dinge nicht hart kodieren wollen.

1voto

Ariel Punkte 2410

Wie aus Ihrer Frage hervorgeht, liegt das Problem im Zeitstempel, der vom Server zurückgegeben wird. Die eigentliche Frage ist also, ob Sie Zugang zu diesem Server haben. Oder ob Sie wissen, in welcher Zeitzone er sich befindet. Wenn ja, aktualisieren Sie die Zeit auf dem Server. Zweitens: Berechnen Sie die Differenz zwischen den Zeitzonen (Sie sagen, es ist eine Stunde) und fügen Sie sie zu Ihrer NSDate-Instanz hinzu. Sie können auch NSCalendar verwenden, wie es haben -(void)setTimeZone:(NSTimeZone *)timezone; Methode (dachte, es könnte für Ihre Bedürfnisse zu aufwendig sein)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X