2010-04-11 76 views
9

我从解析XML文件中得到一个字符串,看起来像这样:Fri,2010年4月9日00:00:45 +0200 和相应的模式应该是这个“EEE,dd MMM yyyy HH:毫米:SS ZZ“,但我得到(null)。iPhone SDK NSString到NSDate

这是我的代码:

NSString *dateString = @"Fri, 09 Apr 2010 00:00:45 +0200"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"date:%@",date); // result date:(null) 

编辑:

现在,这对我的作品,我不得不切换到EN-US定位:

NSLocale* usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setLocale:usLocale]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

NSDate *date = [dateFormatter dateFromString:dateString]; 
+0

别忘了发布你的dateFormater&usLocale! – Martin 2012-05-11 14:10:24

+0

原因是您的设备12/24设置与区域设置相反。这会导致Apple通过将“HH:mm:ss”更改为“hh:mm:ssa”来“帮助”您。使用en-US语言环境会禁用此“功能”。 (虽然en_US_POSIX更好。) – 2014-01-16 14:19:08

回答

9

您的代码为我工作当我改变这条线时:

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

到这一行:

[dateFormatter setDateFormat:@"EEE',' dd MMM yyyy HH:mm:ss ZZ"]; 
+0

奇怪它仍然给我空结果。 iPhone SDK 3.1.2 – scud 2010-04-11 22:05:46

+0

它在字符串为“Fr.”时起作用。而不是“星期五”,这可能是因为它寻找德国时间格式。 – scud 2010-04-12 19:07:20