Das Protokollieren eines NSDate
im Debugger ist etwas irreführend, da es Ihnen einen Kalendertag und eine Zeit für eine bestimmte Zeitzone gibt - UTC / GMT. % Co_de% hat jedoch keine inhärente Zeitzone oder irgendeine inhärente Beziehung dazu, wie Menschen Daten überhaupt wahrnehmen und darüber nachdenken. Stattdessen ist es ein Zeitstempel. Klassen wie NSDate
, NSDateComponents
, NSTimeZone
usw. sind alle vorhanden, um menschlichen Kontext und Formatierung bereitzustellen.
Sie sehen also den Zeitstempel, der für dieses Format und die UTC-Zeitzone formatiert ist. So wird NSDateFormatter
immer angezeigt, wenn Sie im Debugger oder in der Konsole ausgedruckt werden. Wenn Sie den Zeitzonen-Offset zwischen UTC und Ihrer eigenen Zeitzone berechnen würden, würden Sie feststellen, dass das Datum den Zeitstempel darstellt, den Sie ihm gegeben haben, und nicht eine, aber viele Stunden frei.
Die Standarddarstellung der Datumszeichenfolge formatiert das Datum wahrscheinlich als UTC und nicht als lokale Zeitzone (das genaue Format, das verwendet wird, ist nicht definiert und kann sich von Release zu Release ändern. Sie sollten sich also nicht darauf verlassen ). Sie sollten die NSDateFormatter-Klasse verwenden, wenn Sie ein Datum in einem bestimmten Format (oder mit einer bestimmten Zeitzone einschließlich der lokalen Zeitzone) formatieren müssen. Weitere Informationen finden Sie in den Daten Formatierungshandbuch und die NSDateFormatter Klassenreferenz für weitere Informationen.