如何解析日期字符串?

时间:2015-07-10 18:09:23

标签: objective-c parsing date nsdateformatter

我必须像这样解析日期:

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"以及其他许多但它无法正常工作。
你能救我吗?

NSString *dataStr=@"Tue, 09 Dec 2014 08:28:19 GMT";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"E, d M y H:m:s Z"];
NSDate *dte = [dateFormat dateFromString:dataStr];
NSLog(@"Date: %@  Converted: %@",dataStr, dte);

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

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

2 个答案:

答案 0 :(得分: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 :(得分:-1)

解决了问题

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

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

感谢您的帮助。