我正在解析RSS提要并使用NSDateFormatter,代码如下:
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"pubDate"]) {
NSLog(@"CURRENT STRING %@", currentString);
NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
[df1 setDateFormat:@"EEE, d MMM yyyy hh:mm:ss ZZZZ"];
NSDate *newDate = [df1 dateFromString:currentString];
NSLog(@"NEW DATE %@", newDate);
}
}
以下是CURRENT STRING的日志,即提供给dateformatter的输入:
下图显示输出NEW DATE的日志,其中包含一些空值:
我在StackOverflow上尝试了许多问题,说使用NSLocale和其他东西,但它们对我不起作用。有谁可以指出这个问题?
答案 0 :(得分:2)
在解析特定的本地化日期时,您应该为这些日期提供正确的本地化。
另请注意24(HH
)或12(hh
)小时符号:
NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
df1.locale = locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"];
[df1 setDateFormat:@"EEE, d MMM yyyy HH:mm:ss ZZZZ"];
NSDate *newDate = [df1 dateFromString:currentString];
NSLog(@"NEW DATE %@", newDate);
答案 1 :(得分:1)
在RSS中,你不必在NSLog中看到的是字符串是什么。
这种情况正在发生,因为你最后有空格,最后有\ n。
所以你需要删除那些空格和新行,如下所示。
NSString *yourString = [NSString stringWithFormat:@"%@", [[feeds objectAtIndex:indexPath.row] objectForKey:@"myStringCode"]];
yourString = [yourString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
执行此操作后,尝试格式化日期。