我正在尝试使用 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/