如何从Twitter API解析月份和年份返回JSON

时间:2013-05-22 13:27:55

标签: iphone json twitter nsdateformatter

假设Twitter以JSON格式返回Wed Sep 14 18:52:57 +0000 2011。我如何解析它,使显示看起来像Sep 2011。  我知道DateFormatter。我尝试了以下代码,但它不断返回Null

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

2 个答案:

答案 0 :(得分:1)

您使用相同的日期格式将输入字符串created解析为NSDate,并从解析日期创建最终输出格式。日期格式化程序无法使用日期格式Wed Sep 14 18:52:57 +0000 2011解析日期MMM yyyy。这就是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]];

答案 1 :(得分: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