使用NSDateFormatter来解析Twitter字符串

时间:2011-07-26 02:44:19

标签: iphone objective-c cocoa-touch twitter

我正在尝试从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

提前感谢您提供任何帮助;)

3 个答案:

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