我正在尝试从twitter API返回的字符串创建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)
I found this but it's not working either
我有Lion + Xcode 4.1 我的iPad低于4.3.5
提前感谢您提供任何帮助;)
答案 0 :(得分:5)
不要踢得太厉害......
在格式字符串中,从Z
左右删除撇号。撇号意味着它将是文字Z
,而不是时区。如果删除它们,它将正常工作。
答案 1 :(得分:3)
这对我有用
没有像Zave DeLong那样在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"];
答案 2 :(得分:1)
对于通过Google发现此问题的任何人,Twitter显然已更改其日期格式,至少对于其http://search.twitter.com/search.json
端点而言。
NSDate __attribute__((pure)) *parseTwitterDate(NSString *twitterDate) {
NSDateFormatter *twitterDateFormatter = NSDateFormatter.new;
[twitterDateFormatter setDateFormat: @"EEE, dd MMM yyyy HH:mm:ss Z"];
return [twitterDateFormatter dateFromString:twitterDate];
};