2013-09-18 2 views
0

Я разборе RSS-канал и используя NSDateFormatter, код выглядит следующим образом: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);  

     } 
} 

Ниже приведен журнал текущей строки, то есть вход предоставляется в dateformatter:

enter image description here

Следующее изображение показывает журнал выхода новой даты, которая имеет некоторые нулевые значения в нем:

enter image description here

Я пробовал много вопросов о StackOverflow, который говорит, что использует NSLocale и другие вещи, но они не сработали для меня. Может ли кто-нибудь указать на проблему?

+2

Все ли даты в одном формате? Не могли бы вы напечатать строки, которые не могут разобрать? –

+0

Вы уверены, что все элементы имеют одинаковый формат даты? – Desdenova

+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);  
+0

Вы спасли меня много времени. Большое спасибо человеку. – AJ112

1

В RSS, ЕГО НЕ нужно то, что вы видите в NSLog как строка.

Это происходит потому, что у вас есть пробелы в конце и \ n в конце.

Так что вам нужно удалить эти пробелы и новую строку, как показано ниже.

NSString *yourString = [NSString stringWithFormat:@"%@", [[feeds objectAtIndex:indexPath.row] objectForKey:@"myStringCode"]]; 
yourString = [yourString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 

после этого, попробуйте форматировать дату.

Смежные вопросы