这是我一直存在的一个问题,我不能为了我的生活而正确地修复它。使用RSS源http://www.localendar.com/public/RogerJohnson?style=M3, 我有我的应用程序设置来解析XML并列出每个日历条目到一个TableView的行。这个问题在DST开始时弹出。 Localendar没有对如果DST发生的事件检查功能,所以在RSS提要的pubdate的总是显示为:为iOS解析RSS时间和DST NSDate
Fri, 02 May 2014 19:00:00 EST
这一天的活动实际上是在下午7:00 EDT开始。因此,当应用程序转换所有内容时,需要将EST放在心上,并且知道它现在在DST中,因此将时间显示为美国东部时间20:00:00。我该如何正确设置这个NSDate,以便无论是否为DST,它都会显示7:00而不是一小时调整?
这里是我正在解析RSS:
NSString *articleDateString = [item valueForChild:@"pubDate"];
NSDate *articleDate = [NSDate dateFromInternetDateTimeString:articleDateString formatHint:DateFormatHintRFC822];
NSLog(@"%@", articleDate);
RSSEntryCalendar *entry = [[[RSSEntryCalendar alloc] initWithBlogTitle:blogTitle articleTitle:articleTitle articleUrl:articleUrl articleDate:articleDate articleImage:bodyoftext] autorelease];
然后,显示在表视图我有一个的cellForRowAtIndexPath:
RSSEntryCalendar *entry = [_allEntries objectAtIndex:indexPath.row];
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
NSString *articleDateString = [dateFormatter stringFromDate:entry.articleDate];
cell.detailTextLabel.text = articleDateString;
正如前面提到的,pubdate的总是显示EST,无论DST的生效或不生效。如果它显示19:00:00,它应该是7,不管一年中的哪个时间,但是在DST期间不断变化。
我把一个NSLog的为NSDate的,我分析它,这里是我得到一个条目:
2014-05-03 00:00:00 +0000
,在表视图中显示出来的时间是May 2nd, 2014 8:00PM
,而实际事件发生在May 2nd, 2014 7:00PM
。希望这有助于展示问题。
请找到该链接 http://stackoverflow.com/questions/16741480/adjust-nsdate-by-one-hour-for-dst – Sam