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];
vergessen Sie nicht, Ihre DateFormater & usLocale zu veröffentlichen! – Martin
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.) –