2009-10-13 55 views
1

在Apple Docs中,他们说NSDateFormatter使用Unicode作为规范。我读过的规格,但我有麻烦解释此日期:如何用NSDateFormatter解释日期?

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) 

回答

2

对不起乡亲,琢磨出来了。 NSDateFormatter默认使用当前系统区域设置。

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

我:在上面的代码示例中,如果您将系统区域设置为除美国要解决它的东西,只是之前的区域设置为你的日期字符串中使用的,这样它只有失败我只是遇到了同样的问题。这与当前的日期和时间设置(12/24小时)有关。我试着用'yyyy-MM-dd HH:mm:ss'解析日期'2004-11-29 16:01:26'。只有当我强制locale时才有效:'[dateFormatter setLocale:[[[[NSLocale alloc] initWithLocaleIdentifier:@“en_GB”] autorelease]];'混乱但是可行! – 2009-12-30 02:35:51