NSDateFormatter mit Standardzeitzone gibt ein anderes Datum als die NSDate-Beschreibungsmethode

8
%Vor%

Gibt mir ein falsches Datumsformat:

Datum: 2013-01-31 18:00:00 +0000 formatiert: 31-01-13 19:00 (ab Zeitstempel: 1359655200.000000)

Online-Conversion-Tool: Ссылка gibt an, dass das erste Datum korrekt ist: 2013-01-31 18:00:00 + 0000.

Warum erzeugt NSDateFormatter ein anderes Datum als NSLog? Sollte nicht [NSDate description] defaultTimeZone beim Drucken auf der Konsole verwenden? Ich bekomme den gleichen Fehler mit [_dateFormatter setTimeZone:[NSTimeZone localTimeZone]] ; und [_dateFormatter setTimeZone:[NSTimeZone systemTimeZone]] ;

    
Lukasz 23.05.2013, 15:20
quelle

2 Antworten

17

Das ist richtiges Verhalten, weil:

  1. [NSDate description] verwendet UTC, nicht die lokale Zeitzone (deshalb gibt es in der Beschreibung ein +0000 ).
  2. Ihr NSDateFormatter verwendet die lokale Zeitzone.
  3. Sie befinden sich in Dänemark, wo die lokale Zeitzone die Mitteleuropäische Zeit ist, die derzeit eine Stunde plus UTC beträgt.

Der einzige Weg, wie diese übereinstimmen, ist, wenn Sie NSDateFormatter angeben, UTC zu verwenden. Das könnte aber nicht das sein, was du willst.

    
Tom Harrington 23.05.2013, 17:02
quelle
-1

Es ist das Zeitzonenproblem, wie Sie herausgefunden haben. Die Standardzeitzone verwendet die Systemzeitzone. Sagen Sie, wenn Sie in GMT + 1 sind, sollten Sie 19-00 bekommen. Der von Ihnen verwendete Konverter gibt Ihnen GMT-Zeit.

Wenn Sie eine zeitspezifische Zeitzone wünschen und den Offset von GMT kennen, können Sie Folgendes verwenden:

%Vor%

Hoffe, das löst das Problem.

    
Vignesh 23.05.2013 15:23
quelle