0

假设 TwitterWed Sep 14 18:52:57 +0000 2011以 JSON 格式返回。我该如何解析它以使显示看起来像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]];
4

2 回答 2

1

您正在使用相同的日期格式将输入字符串解析createdNSDate并从解析的日期创建最终输出格式。日期格式化程序无法Wed Sep 14 18:52:57 +0000 2011使用日期格式解析日期MMM yyyy。这就是为什么date是 nil 的原因。

编辑:快速谷歌搜索也给了我这个结果:iPhone + Twitter API:转换时间?

编辑 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]];
于 2013-05-22T13:41:53.753 回答
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
于 2013-05-22T13:45:16.123 回答