9 Stimmen

Konvertierung von z.B. 2010-09-11T00:00:00+01:00 Format in NSDate

Ich habe viel zu viel Zeit (mehr als eine Stunde) mit einer Aufgabe verbracht, von der ich dachte, sie würde nur zwei Minuten dauern. Auf dem iPhone:

NSString * dateString = @"2010-09-11T00:00:00+01:00";
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssTZD"];
NSDate  *date = [formatter dateFromString:dateString];

ERGEBNIS: Datum == Null

Was verpasse ich nur!! (Außer meiner Frist)

Herzliche Grüße,

Ken

13voto

Tommy Punkte 98519

TZD ist kein definierter Formatierer per die Unicode-Spezifikation . Das Dokument, das Sie an anderer Stelle verlinkt haben, war ein Vorschlag, den jemand dem W3C gemacht hat, und diente nur der Diskussion. Der von Apple verfolgte Unicode-Standard ist ein fertiger Standard, der von einem anderen Gremium stammt.

Am ehesten käme ZZZ (d. h. @"YYYY-MM-dd'T'HH:mm:ssZZZ") dem Gewünschten nahe, aber das hat keinen Doppelpunkt in der Mitte. Sie müssen also die Zeichenfolge verwenden:

2010-09-11T00:00:00+0100

und nicht die derzeitige, die mit +01:00 endet.

Z.B. die folgenden:

NSString * dateString = @"2010-09-11T00:00:00+0100";
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssZZZ"];
NSDate  *date = [formatter dateFromString:dateString];
NSLog(@"%@", date);

Protokolliert ein gültiges Datumsobjekt von 2010-09-10 23:00:00 GMT.

2voto

Simon Whitaker Punkte 20381

Tipp: Versuchen Sie, mit Ihrem Formatierer zu konvertieren von ein NSDate-Objekt zu eine Zeichenkette und sehen Sie dann, was Sie erhalten. Es ist oft einfacher, in diese Richtung zu debuggen als in die andere.

Haben Sie das gelesen?

http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

Das TZD am Ende des Formatstrings sieht etwas fragwürdig aus.

-2voto

Macarse Punkte 89366

Ich habe dieses Problem mit ce Code.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X