2012-04-26 50 views
2

我使用一個RSS解析器列出時間錯誤。東部標準時間顯示比RSS事件的實際時間晚1小時。所以,我想弄清楚如何在代碼中調整它,以便在TableView的cellForIndexAtPathRow方法中顯示正確的時間。這裏是我使用的代碼:iPhone調整NSDate的時間

NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
NSString *articleDateString = [dateFormatter stringFromDate:entry.articleDate]; 

的entry.articleDate來自RSS解析器早些時候返回:

NSString *articleDateString = [item valueForChild:@"updated"];   
    NSDate *articleDate = [NSDate dateFromInternetDateTimeString:articleDateString formatHint:DateFormatHintRFC3339]; 

你認爲什麼是採取的HH部分的最佳方式只有字符串,並從它減去1?

+0

NSTimeInterval secondsforOneHour = 60 * 60; NSDate * dateoneHourAhead = [articleDate dateByAddingTimeInterval:secondsforOneHour]; – Bala 2012-04-26 15:09:38

+2

加入'[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@「neededTimezone」]]'你應該很好。 – Eimantas 2012-04-26 15:20:04

+0

Eimantas答案效果最好。由於中央時間正確,我只需將時區設置爲美國/芝加哥,並且無論用戶身在何處,它都會顯示正確的時間。謝謝! – user717452 2012-04-26 15:40:46

回答

0

你可以簡單地從解析日期減去一個小時,像這樣:

NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
NSDate *correctedDate = [entry.articleDate addTimeInterval:-3600*1]; 
NSString *articleDateString = [dateFormatter stringFromDate:correctedDate]; 

不過,我認爲真正的問題出在你的RSS解析器。我敢打賭,它正在轉換到您當地的時區。但是,沒有看到實際的價值,我不能確定。