【发布时间】:2011-05-23 19:46:30
【问题描述】:
我正在尝试使用 NSDateFormatter 将 Twitter API 结果中的字符串转换为 NSDate 对象。我发现 NSDateFormatter 只是返回我机器的当前日期/时间。任何帮助将不胜感激!
这是进入我的函数的字符串的样子:
2010 年 12 月 11 日星期六 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 时使用自动释放更改为函数中的显式释放。当在一个巨大的循环中调用它时,我发现它开始因自动释放而失败(我猜汽车部分释放的速度不够快),但将其更改为这个解决了问题。
【问题讨论】:
-
您能否展示调用该方法的代码以及您如何展示结果?
-
您的代码对我有用。我会检查你在哪里处理返回值。 (尽管您的代码每次运行时都会泄漏 NSDateFormatter。)
-
谢谢史蒂夫,内存泄漏已修复!
-
对于所有开发跨区域设置的人,请注意
NSDateFormatter严格遵守区域设置!添加[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]],您就安全了。 -
行
NSString* convertedDate = [df dateFromString:created_at];应该是NSDate* convertedDate = [df dateFromString:created_at];
标签: ios twitter nsdate nsdateformatter