NSDateFormatterでRSS2.0のpubDateがとれない

RSSの記事1つ1つには公開日時が乗っている
<pubDate>Tue, 30 Nov 2010 06:54:00 +0000<pubDate>
これはフォーマットとして”EEE, dd MMM yyyy HH:mm:ss Z”なのでNSDateFormatterを使って

[objc]
<code>NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSDate *date = [dateFormatter dateFromString:currentDate];
NSLog(@"result [%@]", date);
[dateFormatter release];</code>
[/objc]

これで行けるはずだがおかしい。怪しい部分を切りとって
Tue, 30 Nov 2010 06:54:00 +0000
30 Nov 2010 06:54:00
にして”dd MMM yyyy HH:mm:ss”
にしてみたりスペースを-に置き換えてみたりしたけどだめ(><
30 Nov 2010 06:54:00

30 11 2010 06:54:00
にして”dd MM yyyy HH:mm:ss”
にしたら動いた!
意味がわからないね(^^;時差もOKだったけど、曜日はやっぱり入らなかった。
結局pubDateからNSDateを取得するプログラムはこんな感じに
[objc]
– (NSString *)replaceMonth:(NSString *)string
{
string = [string stringByReplacingOccurrencesOfString:@"Jan" withString:@"01"];
string = [string stringByReplacingOccurrencesOfString:@"Feb" withString:@"02"];
string = [string stringByReplacingOccurrencesOfString:@"Mar" withString:@"03"];
string = [string stringByReplacingOccurrencesOfString:@"Apr" withString:@"04"];
string = [string stringByReplacingOccurrencesOfString:@"May" withString:@"05"];
string = [string stringByReplacingOccurrencesOfString:@"Jun" withString:@"06"];
string = [string stringByReplacingOccurrencesOfString:@"Jul" withString:@"07"];
string = [string stringByReplacingOccurrencesOfString:@"Aug" withString:@"08"];
string = [string stringByReplacingOccurrencesOfString:@"Sep" withString:@"09"];
string = [string stringByReplacingOccurrencesOfString:@"Oct" withString:@"10"];
string = [string stringByReplacingOccurrencesOfString:@"Nov" withString:@"11"];
string = [string stringByReplacingOccurrencesOfString:@"Dec" withString:@"12"];
return string;
}

– (NSDate *)dateFromString:(NSString *)dateString
{
if([dateString length]<6)return nil;
dateString = [dateString substringFromIndex:5];
dateString = [self replaceMonth:dateString];
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"dd MM yyyy HH:mm:ss Z"];
NSDate *output = [inputFormatter dateFromString:dateString];
[inputFormatter release];
return output;
}
[/objc]

ちょっと一時オブジェクトが多いかその辺直したいけど
それは今度。

 

コメントを残す