NSDateFormatter 给出相同的日期,不会循环更新

NSDateFormatter gives same date, wont update in loop

为什么最后日期没有更新,输入正确,查看trace...

代码

// Date
self.dateLabel.text = [NSDateFormatter localizedStringFromDate:item.pubDate dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterNoStyle];
[self.dateLabel sizeToFit];
NSLog(@"pubDate is %@ formated date is %@", item.pubDate,[NSDateFormatter localizedStringFromDate:item.pubDate dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterNoStyle]);

输出

pubDate is 2015-03-30 01:00:00 +0000 formated date is 30/03/2015
pubDate is 2015-03-30 01:00:00 +0000 formated date is 30/03/2015
pubDate is 2015-03-29 23:00:00 +0000 formated date is 30/03/2015

谢谢@Mats 是的 - 即使输入字符串包含时区偏移并且设备设置为英国格式

输入指定了时区:

stringDate 是 2015 年 3 月 30 日,来自 2015-03-30 01:00:00 +0000。

pubDate 是 2015-03-30 01:00:00 +0000 格式化日期是 30/03/2015。

stringDate 是 2015 年 3 月 30 日,来自 2015-03-29 23:00:00 +0000。

pubDate 是 2015-03-29 23:00:00 +0000 格式化日期是 30/03/2015。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
self.dateLabel.text = [dateFormatter stringFromDate:item.pubDate];

不是

self.dateLabel.text = [NSDateFormatter localizedStringFromDate:item.pubDate dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterNoStyle];

看似矫枉过正,但确实有效