2013-05-22 29 views
0

假設Twitter以JSON格式返回Wed Sep 14 18:52:57 +0000 2011。我如何解析它,使顯示看起來像Sep 2011。 我知道DateFormatter。我嘗試了下面的代碼,但它不斷返回我Null如何從Twitter API中解析月份和年份API返回JSON

NSString *created = [(NSDictionary *)TWData objectForKey:@"created_at"]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"MMM yyyy"]; 
    NSDate *date = [dateFormatter dateFromString:created]; 
    tweetingSince.text= [NSString stringWithFormat:@"@%@",[dateFormatter stringFromDate:date]]; 
+0

如果你有相同的字符串格式總是比剛爆炸的字符串和 – Dilip

+0

你的意思是通過挑選從一個字符串中的子獲得您想要從你的字符串顯示該值'NSMakeRange'什麼的..我不太確定,但我不相信Twitter會很快改變格式..值得一試! – holierthanthou84

+0

是的,你可以這樣做檢查我的答案。 – Dilip

回答

1

您正在使用相同的日期格式解析輸入字符串createdNSDate並從解析日期創建最終的輸出格式。日期格式化程序無法使用日期格式MMM yyyy解析日期Wed Sep 14 18:52:57 +0000 2011。這就是爲什麼date是零。

編輯: 也很快谷歌搜索給了我這樣的結果對SO:iPhone + Twitter API: Converting time?

編輯2:你有正確的NSDate解析代碼應該是這樣的

NSString *created = [(NSDictionary *)TWData objectForKey:@"created_at"]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
// Parse input string to NSDate 
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss Z yyyy"]; 
NSDate *date = [dateFormatter dateFromString:created]; 
// Convert parsed date to output format 
[dateFormatter setDateFormat:@"MMM yyyy"]; 
tweetingSince.text= [NSString stringWithFormat:@"@%@",[dateFormatter stringFromDate:date]]; 
+0

嗯你是正確的盧卡斯!愚蠢的我..雖然我不知道它需要怎麼做 – holierthanthou84

+0

我已編輯我的答案,包括代碼 –

+0

我想知道爲什麼谷歌從來沒有拋出我很好的搜索:D!嘗試並測試這個..它的作品像一個魅力!謝了哥們!! – holierthanthou84

1

你可以像下面這樣做

NSString *myString = @"Wed Sep 14 18:52:57 +0000 2011"; 

    NSCharacterSet *delimiters = [NSCharacterSet characterSetWithCharactersInString:@" "]; 
    NSArray *components = [myString componentsSeparatedByCharactersInSet:delimiters]; 

    NSLog(@"dilip-%@",components); 

輸出將爲

dilip-(
    Wed, 
    Sep, 
    14, 
    "18:52:57", 
    "+0000", 
    2011 
) 

現在您可以從數組中選擇任何值並使用該值創建新字符串。

NSString * firstStr = [components objectAtIndex:1]; 
NSString * secondStr = [components objectAtIndex:5]; 


NSString * fullStr = [NSString stringWithFormat:@"%@ %@",firstStr,secondStr]; 

NSLog(@"dilip - %@",fullStr); 

輸出將被

dilip - Sep 2011 
+0

抱歉讓你的綠色勾號離開你!我相信下面提到的更適合我的編碼風格! 但是,如果有人正在閱讀:這個答案是完全合法的! – holierthanthou84

+0

沒問題。必須讚賞好的答案,盧卡斯給出了很好的答案。 – Dilip

+0

順便說一下,你的解決方案可以通過使用NSArray *組件= [myString componentsSeparatedByString:@「」]';-) –