2012-06-24 16 views
7

Mam ciąg pobranego od nagłówka odpowiedzi HTTP polu „Data” w formacie:Http Data do NSDate

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

co chcę przekonwertować ten ciąg w obiekcie NSDate. W tym zakresie mam instancja NSDateFormatter użyciu różnych format:

[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'"]; 

ale podczas drukowania ciąg od daty przy użyciu:

[dateFormatter dateFromString:date] 

Otrzymuję:

(null) 

gdzie robię źle?

+0

Wynik jest nadal (zerowy). Uważam, że błąd występuje w formacie miesiąca "MMM". Próbowałem sformatować "24 czerwca 2012" w formacie "dd MMM rrrr", a wynik jest taki sam (zerowy). – LuckyStarr

+0

Wynik jest nadal (zerowy) – LuckyStarr

+0

ok ten testowałem i działa: [dateFormatter setDateFormat: @ "EEE", "dd MMM rrrr HH: mm: ss zzz"]; jeśli nadal nie otrzymujesz wyniku, to coś innego jest nie tak – Pfitz

Odpowiedz

8

Nie jestem pewien, rozumiem problem, jak swój własny kod wydaje się działać dobrze dla mnie:

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); 

Który daje to wyjście:

Data: 2012-06-24 16:34 : 51 +0000

Chyba że źle zrozumiałem twoje pytanie, to jest poprawny wynik.

+5

Problem polegał na tym, że brakowało w nim dwóch wierszy kodu: NSLocale * usLocale = [[NSLocale alloc] initWithLocaleIdentifier: @ "en_US"]; [dateFormatter setLocale: usLocale]; – LuckyStarr

+0

Ta odpowiedź nie działa dla mnie, pokazuje mi zerową wartość dla daty – booker

+1

@booker Jeśli jesteś w innym kraju poza USA, powinieneś ustawić lokalną 'NSDateFormatter' na en_US. – KudoCC