Twitter JSON API的NSDate格式化程序问题

the*_*men 1 twitter cocoa-touch objective-c ios

我正在尝试格式化JSON响应日期值:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
    //Wed Dec 01 17:08:03 +0000 2010
    [df setDateFormat:@"eee, MMM dd HH:mm:ss ZZZZ yyyy"];
    NSDate *date = [df dateFromString:[twitter objectForKey:@"created_at"]];
    [df setDateFormat:@"dd/MM/yyyy"];
    NSString *dateStr = [df stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)

我按照这个问题的说明:

在iOS中解析日期/时间:如何处理(或不处理)时区?

实际上,JSON响应中的日期值是:

created_at":"Mon, 28 May 2012 11:20:29 +0000"
Run Code Online (Sandbox Code Playgroud)

接收值时,日期变量为nil [df dateFromString:[twitter objectForKey:@"created_at"]];

非常感谢

Vik*_*ica 6

如果月份缩写(9月),请尝试此格式:

[df setDateFormat:@"EEE, d MMM y HH:mm:ss Z"];;
Run Code Online (Sandbox Code Playgroud)

[df setDateFormat:@"EEE, d MMMM y HH:mm:ss Z"];
Run Code Online (Sandbox Code Playgroud)

如果月份名称已写出(9月).

格式说明符的完整列表.

我还必须改变语言环境

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
[df setDateFormat:@"EEE, d MMM y HH:mm:ss Z"];
NSDate *date = [df dateFromString:@"Mon, 28 May 2012 11:20:29 +0000"];

[df setDateFormat:@"dd/MM/yyyy"];
NSString *dateStr = [df stringFromDate:date];

NSLog(@"%@",dateStr);
Run Code Online (Sandbox Code Playgroud)

产量

28/05/2012
Run Code Online (Sandbox Code Playgroud)


Rif*_*nio 5

我发现twitter Json响应中的"created_at"属性采用以下格式:

Thu Apr 19 10:07:29 +0000 2012
Run Code Online (Sandbox Code Playgroud)

所以我使用了这个格式化程序:

[df setDateFormat:@"EEE MMM d HH:mm:ss Z y"];
Run Code Online (Sandbox Code Playgroud)

它工作正常;)