2010-04-11 16 views
9

Ich habe eine Zeichenfolge aus dem Parsen einer XML-Datei, die so aussieht: Fr, 09 Apr 2010 00:00:45 +0200 und das entsprechende Muster sollte dies sein "EEE, TT MMM JJJJ HH: mm: ss ZZ ", aber ich bekomme (null).iPhone SDK NSString zu NSDate

Dies ist mein Code:

NSString *dateString = @"Fri, 09 Apr 2010 00:00:45 +0200"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"date:%@",date); // result date:(null) 

Edit:

Das jetzt für mich arbeitet, musste ich en-US locale wechseln:

NSLocale* usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setLocale:usLocale]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

NSDate *date = [dateFormatter dateFromString:dateString]; 
+0

vergessen Sie nicht, Ihre DateFormater & usLocale zu veröffentlichen! – Martin

+0

Der Grund dafür ist, dass die Einstellung Ihres Geräts 12/24 dem Gebietsschema widerspricht. Dies bewirkt, dass Apple Ihnen "hilft", indem Sie "HH: mm: ss" in "hh: mm: ssa" ändern. Wenn Sie das Gebietsschema en-US verwenden, wird dieses "Feature" deaktiviert. (Obwohl en_US_POSIX ist besser.) –

Antwort

9

Ihr Code für mich gearbeitet Wenn ich diese Zeile ändere:

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

zu dieser Zeile:

[dateFormatter setDateFormat:@"EEE',' dd MMM yyyy HH:mm:ss ZZ"]; 
+0

Seltsamerweise ist es immer noch Null Ergebnis. iPhone SDK 3.1.2 – scud

+0

Es funktioniert, wenn die Zeichenfolge "Fr" ist anstelle von "Fr", was wahrscheinlich passiert, weil es nach einem deutschen Zeitformat sucht. – scud