Iphone 如何使用NSDateFormatter解释日期?

Iphone 如何使用NSDateFormatter解释日期?,iphone,nsdateformatter,Iphone,Nsdateformatter,在Apple文档中,他们说NSDateFormatter使用Unicode作为规范。我已经阅读了规范,但是我在解释这个日期时遇到了问题: NSDateFormatter *frm = [[NSDateFormatter alloc] init]; [frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; NSLog(@"Tue Oct 13 09:24:15 +0000 2009 becomes %@", [frm dateFromString:@

在Apple文档中,他们说NSDateFormatter使用Unicode作为规范。我已经阅读了规范,但是我在解释这个日期时遇到了问题:

NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
NSLog(@"Tue Oct 13 09:24:15 +0000 2009 becomes %@", [frm dateFromString:@"Tue Oct 13 09:24:15 +0000 2009"]);
此代码打印出:

2009-10-13 11:37:40.334 test2[1704:20b] Tue Oct 13 09:24:15 +0000 2009 becomes (null)

对不起,伙计们,我已经弄明白了。NSDateFormatter默认使用当前系统区域设置。在上面的代码示例中,仅当您将系统区域设置设置为非U.S.来修复它时,才会失败,然后再将区域设置设置为日期字符串使用的区域设置,如下所示:

[frm setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];

我刚才也有同样的问题。这与当前的日期和时间设置(12/24小时)有关。我试图用
yyyy-MM-dd HH:MM:ss
解析日期
2004-11-29 16:01:26
。仅当我强制使用区域设置时才起作用:
[dateFormatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@“en_GB”]autorelease]混乱,但它的工作!