2015-07-10 174 views
-1

我要解析日期这样的:如何解析日期字符串?

Thu, 09 Apr 2015 11:31:14 GMT 
Tue, 05 May 2015 15:06:37 GMT 
Tue, 09 Dec 2014 08:28:19 GMT 

我使用NSDateFormatter。 我试过@"E, d M y H:m:s Z"@"EEE, d MMM yyyy HH:mm:ss zzz"和许多其他但它不起作用。
你能帮我吗?

​​

编译时,我没有任何错误,但我的NSLog输出为:

Date: Tue, 09 Dec 2014 08:28:19 GMT Converted: (null) 
+0

定义“不起作用”。 –

+0

寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误,以及在问题本身中重现问题所需的最短代码。 –

+0

@HotLicks:解析日期意味着期望的行为,包括最短的代码。只缺少足够的错误描述。 – vikingosegundo

回答

2

这是由于这样的事实,即当前区域可能不适合。将它设置为en_US_POSIX

for (NSString* dataStr in @[@"Thu, 09 Apr 2015 11:31:14 GMT",@"Tue, 05 May 2015 15:06:37 GMT", @"Tue, 09 Dec 2014 08:28:19 GMT"]){ 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    dateFormat.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 
    [dateFormat setDateFormat:@"E, d M y H:m:s Z"]; 
    NSDate *dte = [dateFormat dateFromString:dataStr]; 
    NSLog(@"Date: %@ Converted: %@",dataStr, dte); 
} 

回报

Date: Tue, 05 May 2015 15:06:37 GMT Converted: 2015-05-05 15:06:37 +0000 
Date: Thu, 09 Apr 2015 11:31:14 GMT Converted: 2015-04-09 11:31:14 +0000 
Date: Tue, 09 Dec 2014 08:28:19 GMT Converted: 2014-12-09 08:28:19 +0000 

更多信息Technical Q&A QA1480: NSDateFormatter and Internet Dates

-1

问题解决了

这个问题只是来自XML RSS的原始日期字符串中的隐藏字符(换行符= \ n)。 我解决了它用空字符串替换隐藏的字符。

dataStr = [dataStr stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

感谢您的帮助。