0

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

        }
}

以下は、dateformatter に提供される入力である CURRENT STRING のログです。

ここに画像の説明を入力

次の画像は、いくつかの null 値を含む出力 NEW DATE のログを示しています。

ここに画像の説明を入力

NSLocale などを使用するように言う StackOverflow に関する多くの質問を試しましたが、うまくいきませんでした。誰でも問題を指摘できますか?

4

2 に答える 2

2

特定のローカライズされた日付を解析するときは、それらの日付に正しいローカライズを提供する必要があります。

HHまた、24( ) または 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);     
于 2013-09-18T11:59:19.923 に答える
1

RSS では、NSLog に表示されるのは、文字列がどのようなものかということではありません。

これは、最後に空白があり、最後に \n があるために発生しています。

したがって、以下のように空白と改行を削除する必要があります。

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

これを行った後、日付をフォーマットしてみてください。

于 2013-09-18T12:00:56.037 に答える