假设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]];
答案 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