我必须像这样解析日期:
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)
答案 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:@""];
感谢您的帮助。