Frage

Ich habe ein Datum, 2010-08-23 13:30:00 -0400 und ich versuche, es in der UTC +2 Zeitzone zu erhalten. Der Unterschied in Sekunden ist 21600 aber wenn ich [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate]; nennen, ich 2010-08-24 01:30:00 +0200 die 2010-08-23 19:30:00 +0200 sein sollte. Jede Idee, was ich falsch mache?

War es hilfreich?

Lösung

Ein Date-Objekt stellt einen bestimmten Zeitpunkt, und zwar unabhängig von dem, was Uhren, die verschiedene Menschen könnten zu diesem Zeitpunkt gesagt haben.

Die Zeitzonen werden einbezogen, wenn Sie das Datum angezeigt werden sollen, da Sie in der Regel, was die Uhr des Benutzers angezeigt werden gesagt hätte (oder sagen oder sagen werden) zu diesem Zeitpunkt. Dies ist genau das, was passiert, wenn man eine NSDate NSLog. Die Beschreibung der Zeitpunkt ist, dass Moment der Zeit in Ihrer Zeitzone repräsentiert

Das Hinzufügen oder von einem NSDate Subtraktion ist nicht Zeitzone-Konvertierung. Addition und Subtraktion produziert NSDates darstellt andere Momente in der Zeit; in Ihrem Fall sind Sie ein NSDate für einen Moment 6 Stunden später von dem Moment Erstellen Sie begann mit, nicht im selben Moment auf der anderen Seite des Planeten.

Zur Vereinfachung der Zeitzone Umwandlung sucht in gleichzeitig in verschiedenen Punkte im Raum (verschiedene Abschnitte von der Oberfläche des Planeten), während Datum Addition und Subtraktion < em> Berechnung unterschiedliche Zeiten .

Es gibt keine Zeitzone-Konvertierung für ein NSDate, weil es nicht in einer Zeitzone ist mit zu beginnen. Eine Zeitzone wird nur beteiligt, wenn Sie das Datum für die Zeitzone zu formatieren. Also, in einer anderen Zeitzone dieses Datum angezeigt werden, genau das tun. Typischerweise bedeutet dies, um die gewünschte Zeitzone zuführt Datum Formatter .

Andere Tipps

Ich sehe, dass das Datum, das Sie zurückbekommen hat eine andere Zeitzone +200 nicht -400. Wenn Sie bemerken, werden Sie feststellen, dass das Ergebnis genau 12 Stunden (oder 6 Stunden + 6 Stunden) später als die ursprüngliche Datum. Haben Sie zufällig das Gebietsschema als auch ändern, wenn Sie das neue Datum gemacht? Wenn Sie die Änderung vorgenommen haben, dass Sie das System statt +200 die Zeit automatisch angepasst begann geben -400 zu kompensieren, dann kann du noch 6 Stunden auf das Datum. NSDate speichert alle Daten als ein Zeitintervall seit 1. Januar 2001 GMT und passt für Zeitzonen je nach Bedarf.

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