ios - NSDateFormatter - 无法从 Twitter JSON API 解析日期

标签 ios twitter nsdate nsdateformatter

我正在尝试使用 NSDateFormatter 将来自 Twitter API 结果的字符串转换为 NSDate 对象。我发现 NSDateFormatter 只是返回我机器的当前日期/时间。任何帮助将不胜感激!

这是进入我的函数的字符串的样子:

Sat, 11 Dec 2010 01:35:52 +0000

函数如下:

+(NSDate*)convertTwitterDateToNSDate:(NSString*)created_at
{
    // Sat, 11 Dec 2010 01:35:52 +0000
    static NSDateFormatter* df = nil;

    df = [[NSDateFormatter alloc] init];
    [df setTimeStyle:NSDateFormatterFullStyle];
    [df setFormatterBehavior:NSDateFormatterBehavior10_4];
    [df setDateFormat:@"EEE, d LLL yyyy HH:mm:ss Z"];

    NSDate* convertedDate = [df dateFromString:created_at];     
    [df release];

    return convertedDate;
}

这是返回日期:

2010-12-10 17:58:26 -0800

这恰好是我电脑现在的日期和时间。

*注意!* 将内存管理从分配 DateFormater 时使用自动释放更改为函数中的显式释放。当在一个巨大的循环中调用它时,我发现它开始因自动释放而失败(我猜自动部分释放的速度不够快),但将其更改为此解决了问题。

最佳答案

我觉得是对的。因为原始字符串在 +0000 时区,结果日期在 -0800 时区。因此,如果您仔细观察它们,您会发现时间是相同的。

当您打印 [date description] 之类的日期时,我相信它会以本地时区打印,但时间是绝对时间。由于 NSDate 仅包含秒数而不包含日历,因此不包含时区信息。

(打印的字符串是相对于本地时区的,但实际日期是绝对的)

关于ios - NSDateFormatter - 无法从 Twitter JSON API 解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414820/

相关文章:

ios - TextField 圆角半径 : Not Sharp Corners

css - 是否可以像 jquery 一样在 google 中托管 twitter bootstrap.css?

ios - 如何在 iOS 中获取本月的第一个日期?

ios - 在其父类(super class)初始化之后初始化 UIView init?

ios - 在 iOS 中使用其数据时处理数组更新

javascript - 需要制作一个 Twitter 分享按钮来分享来自 JS 函数的随机引用

ios - 处理字典中的 null 和 NSDate

json - 使用 SwiftyJSON 反序列化 NSDate

ios - 如何在 UITableView 的部分标题中设置字体颜色?

java - twitter4j 通过地理位置获取推文