2016-07-29 16 views
0

Ich versuche, ein NSDate Objekt aus einer UTC-Zeit Zeichenfolge zu erhalten. Das Beispiel des Zeittelegramms ist dies:Erhalten von NSDate von Zeit Zeichenfolge mit UTC-Format

2016-07-29T11:43:55+02:00 

ich NSDateFormatter bin mit und stellen Sie das Formiat als: yyyy-MM-dd'T'HH:mm:ss

Doch diese mir die Aufnahme mit falscher Zeitzone gibt. Also das oben genannte Datum ist: 2016-07-29T09: 43: 55 + 00: 00

Wie behalte ich den Zeitzonenaspekt?

Ich habe versucht, eine 'Z' an das Ende des Formatierungsprogramms hinzuzufügen, aber das gibt nur ein Nulldatum zurück.

+0

Das ist richtig. 9 ist zwei Stunden hinter Ortszeit. – Tander

+1

Mögliches Duplikat von [ISO 8601 in NSDate konvertieren] (http://StackOverflow.com/questions/17558859/convert-iso-8601-to-nsdate) – vadian

+0

Ihr Datumsformat ist korrekt und die Datumszeichenfolge wird korrekt analysiert Sie fragen, wie Sie feststellen, was GMT Offset die eingehende Datum String hatte? – Droppy

Antwort

2

testen

NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init]; 
[userFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 
NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[userFormatter setLocale:posix]; 
NSString *dateConverted = [userFormatter stringFromDate:theDate]; 
+0

Das wird nicht funktionieren (fehlende "T" im Formatierer) und es beantwortet die Frage nicht. – Droppy

0

Vielen Dank an alle, die helfen. Das Problem wurde gelöst. Die Zeit in meinem iOS Simulator war korrekt. Aber als ich [NSDate date]; anrief, zeigte es mir zwei Stunden vor Ortszeit. Daher die "Fehler", die ich bei der Formatierung von NSDate sah.

+0

Hast du wo gezeigt? 'NSLog()' durch Zufall? – Droppy

+0

Ja, NSLog. Gibt es einen Grund, warum der iOS Simulator die korrekte Zeit anzeigt, aber NSLog nicht? – Tander

+0

Ernsthaft; Dies ist wahrscheinlich die am häufigsten gestellte Frage zu stackoverflow und ich sehe keinen Grund, warum ein iOS/OSX-Entwickler nichts davon wissen würde. 'NSLog()' ruft '[NSDate description]' auf und 'description' formatiert das Datum in der UTC-Zeitzone. Um das Datum in einer anderen Zeitzone anzuzeigen, richten Sie einen 'NSDateFormatter' (einschließlich der Zeitzone) ein und verwenden Sie das Datum -> String-Konvertierung. – Droppy