2012-06-24 5 views
7

ich eine Zeichenfolge aus einem HTTP-Antwort-Header-Feld "Datum" in diesem Format aufgenommen habe:Http Date NSDate

"Sun, 24 Jun 2012 16:34:51 GMT" 

, was ich will, ist zu konvertieren diese Zeichenfolge in einem NSDate Objekt. Für diesen Bereich habe ich ein NSDateFormatter mit verschiedenem Format instanziiert:

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

aber wenn ich die Zeichenfolge Datum drucken verwenden:

[dateFormatter dateFromString:date] 

I erhalten:

(null) 

wo mache ich falsch?

+0

Das Ergebnis ist immer noch (null). Ich glaube, dass der Fehler im Format des Monats "MMM" ist. Ich habe versucht, "24 Jun 2012" mit dem Format "dd MMM yyyy" zu formatieren und das Ergebnis ist dasselbe (null). – LuckyStarr

+0

Das Ergebnis ist immer noch (null) – LuckyStarr

+0

ok das habe ich getestet und es funktioniert: [dateFormatter setDateFormat: @ "EEE", "dd MMM yyyy HH: mm: ss zzz"]; Wenn Sie immer noch kein Ergebnis erhalten, dann ist etwas anderes falsch – Pfitz

Antwort

8

nicht sicher, ob ich das Problem zu verstehen, wie Sie Ihren eigenen Code scheint gut für mich zu arbeiten:

NSString *dateStr = @"Sun, 24 Jun 2012 16:34:51 GMT"; 

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

NSDate *date = [dateFormatter dateFromString:dateStr]; 

NSLog(@"Date: %@", date); 

Welche dieser Ausgabe gibt:

Datum: 2012-06-24 16.34 : 51 +0000

Sofern ich Ihre Frage nicht missverstanden habe, ist dies das korrekte Ergebnis.

+5

Das Problem war, dass es zwei Zeilen Code quaste fehlte: NSLocale * usLocale = [[NSLocale alloc] initWithLocaleIdentifier: @ "en_US"]; [dateFormatter setLocale: usLocale]; – LuckyStarr

+0

Diese Antwort funktioniert nicht für mich, es zeigt mir keinen Wert für das Datum – booker

+1

@booker Wenn Sie in einem anderen Land als USA sind, sollten Sie das lokale 'NSDateFormatter' auf en_US setzen. – KudoCC