2017-02-02 2 views
-3

I NSString von Datum habe:NSString zu NSDate gibt falsches Datum

NSString *dateStr = @"Feb-02-17"; 

Ich versuche es mit dem neuesten Stand zu konvertieren:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MMM-dd-yy"]; 
NSDate *yourDate = [dateFormatter dateFromString:dateStr]; 

Und in yourDate erhalte ich diesen Wert:

2017-02-01 22:00:00 +0000 

Irgendeine Idee, warum es einen Unterschied zwischen den Daten gibt?

+5

Es ist wahrscheinlich Zeitzone Problem. –

+0

Ja, einfach Zeitzone mit der Abkürzung "UTC" zum Formatierer des Datums hinzufügen, es wird nur die UTC-Zeit in die aktuelle Zeitzone umgerechnet. –

+1

Das Datum ist korrekt. 'NSDateFormatter' erstellt das Datum unter Berücksichtigung Ihrer lokalen Zeitzone (UTC +2), aber' print' druckt Datumsangaben in UTC. '2017-02-01 22:00:00 + 0000' und' 2017-02-02 00:00:00 + 0200' ist gleich – vadian

Antwort

1

Verwenden Sie das aktuelle Gebietsschema, um die aktuelle Zeitzone für die Umwandlung des Datums in eine Zeichenfolge zu verwenden.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.locale = [NSLocale currentLocale]; 
[dateFormatter setDateFormat:@"MMM-dd-yy"]; 
NSDate *yourDate = [dateFormatter dateFromString:dateStr]; 

Sonst wird es in UTC sein.