Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用NSDateFormatter解析Twitter字符串_Iphone_Objective C_Cocoa Touch_Twitter - Fatal编程技术网

Iphone 使用NSDateFormatter解析Twitter字符串

Iphone 使用NSDateFormatter解析Twitter字符串,iphone,objective-c,cocoa-touch,twitter,Iphone,Objective C,Cocoa Touch,Twitter,我正试图从twitterapi返回的字符串创建NSDate 我花了几个小时在这个问题上,我创建了一个示例应用程序 NSString *testDate = @"Mon Jul 25 21:20:58 +0000 2011"; NSDateFormatter *frm = [[NSDateFormatter alloc] init]; [frm setDateStyle:NSDateFormatterLongStyle]; [frm setFormatterBehavior:NSDateForma

我正试图从twitterapi返回的字符串创建NSDate 我花了几个小时在这个问题上,我创建了一个示例应用程序

NSString *testDate = @"Mon Jul 25 21:20:58 +0000 2011";
NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setDateStyle:NSDateFormatterLongStyle];
[frm setFormatterBehavior:NSDateFormatterBehavior10_4];
[frm setDateFormat: @"EEE MMM dd HH:mm:ss 'Z' yyyy"];
NSDate *newDate = [frm dateFromString:testDate];
NSLog(@"newDate:%@", newDate);
对我来说,这个代码“应该”起作用

我得到的只是这个:

2011-07-25 19:36:08.467 test[92:707] Test
2011-07-25 19:36:08.475 test[92:707] newDate:(null)

我有Lion+Xcode 4.1 我的iPad低于4.3.5


提前感谢您的帮助;)

不要把自己踢得太厉害


在格式字符串中,从
Z
周围删除撇号。撇号意味着它将是一个文本
Z
,而不是时区。如果你去掉这些,它就会正常工作。

以下是我的工作原理

没有像戴夫·德隆说的那样引用Z。 我在NSDateFormatter上使用了setLocale,这使它工作得更好

NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[frm setDateFormat:@"EEE MMM dd HH:mm:ss Z yyyy"];

对于任何通过谷歌发现这一点的人来说,Twitter显然已经改变了他们的日期格式,至少在
http://search.twitter.com/search.json
endpoint

NSDate __attribute__((pure)) *parseTwitterDate(NSString *twitterDate) {
    NSDateFormatter *twitterDateFormatter = NSDateFormatter.new;
    [twitterDateFormatter setDateFormat: @"EEE, dd MMM yyyy HH:mm:ss Z"];
    return [twitterDateFormatter dateFromString:twitterDate];
};

Twitter搜索端点从一开始就采用了不同的日期格式,我使用的解决方案与您的相同。谢谢你的回答,我应该更准确地回答这个问题。很有趣。这是一个设计糟糕的API的标志,他们甚至不能在整个API中使用一致的(如果不清楚的话)日期格式。他们应该只使用ISO8601。没有设置@“en_US_POSIX”语言环境标识符,代码片段只在模拟器上工作。现在它也可以在设备上工作。谢谢