2012-06-24 71 views
7

我有一個HTTP響應報頭字段「日期」在這個格式拍攝的字符串:HTTP日期到NSDate的

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

我想要的是這個字符串轉換中的NSDate對象。對於這個範圍,我沒有實例化的NSDateFormatter使用各種格式:

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

但是當我使用從日期打印字符串:

[dateFormatter dateFromString:date] 

我收到:

(null) 

我在哪裏做錯誤?

+0

結果仍爲(null)。我相信錯誤的格式是「MMM」月份。我嘗試使用格式「dd MMM yyyy」格式化「2012年6月24日」,結果相同(空)。 – LuckyStarr

+0

結果仍然是(null) – LuckyStarr

+0

確定這一個我測試,它的工作原理:[dateFormatter setDateFormat:@「EEE','dd MMM yyyy HH:mm:ss zzz」];如果你還沒有得到任何結果,比其他東西是錯的 – Pfitz

回答

8

不知道我理解的問題,因爲你自己的代碼似乎爲我工作的罰款:

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

哪個給出了這樣的輸出:

日期:2012-06-24 16:34 :51 +0000

除非我誤解了你的問題,否則這是正確的結果。

+5

問題是,它缺乏quaste兩行代碼: NSLocale * usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@「en_US」]; [dateFormatter setLocale:usLocale]; – LuckyStarr

+0

這個答案不適用於我,它顯示我沒有日期值 – booker

+1

@booker如果你在美國以外的其他國家,你應該把'NSDateFormatter'的本地設置爲en_US。 – KudoCC