私は非常に奇妙な問題を解決しようとしています。私のアプリでは、NSXMLParser を使用してフィードを解析しています。解析する pubDate タグもあります。
NSDate に解析するためのさまざまな日付形式が多数あり、それらのほとんどは解析できます。それらのうちの1つでは問題があります:
<pubDate>2013-04-17T12:22:00.0</pubDate>
ここに私の日付フォーマットコードがあります:
NSArray *dateFormats = @[@"yyyy-MM-dd'T'HH:mm:ss.S",
@"EEE, dd MMM yyyy HH:mm Z",
@"EEE, dd MMM yyyy HH:mm:ss Z",
@"dd/MM/yyyy HH:mm:ss",
@"EEE, dd MMM yyyy HH:mm:ss",@"EEE,dd MMM yyyy HH:mm:ss Z"];
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc]init];
assert(inputFormatter != nil);
NSLocale *loacle = [[NSLocale alloc]initWithLocaleIdentifier:@"en_US_POSIX"];
assert(loacle != nil);
[inputFormatter setLocale:loacle];
NSString *dateString = [NSString stringWithFormat:@"%@",currentPubDate];
NSLog(@"%@",dateString);
NSDate *inputDate = nil;
for (NSString *dateFormat in dateFormats) {
[inputFormatter setDateFormat:dateFormat];
inputDate = [inputFormatter dateFromString:dateString];
if (inputDate) {
break;
}
}
NSLocale *hebrow = [[NSLocale alloc]initWithLocaleIdentifier:@"he_IL"];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc]init];
outputFormatter.locale = hebrow;
[outputFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:3600*2]];
[outputFormatter setDateStyle:NSDateFormatterFullStyle];
[outputFormatter setTimeStyle:NSTimeZoneNameStyleShortStandard];
NSString *outputDate = [outputFormatter stringFromDate:inputDate];
私がデバッグしているとき、それdateString
には発行日がありますが\n
、最後にあることがわかります。こんな感じ@"2013-04-17T12:22:00.0\n"
です。
しかし、NSLog(@"%@",dateString);
私はこれを取得します:
2013-04-17 18:10:37.769 AppName[11651:f803] 2013-04-17T17:56:58.0
2013-04-17 18:10:47.674 AppName[11651:f803] 2013-04-17T17:17:28.0
2013-04-17 18:10:49.990 AppName[11651:f803] 2013-04-17T16:27:36.0
そのため、日付は表示されません。誰にもアイデアはありますか?