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

时间:2015-03-30 13:14:07

标签: ios objective-c nsdateformatter

为什么不是最后更新日期,输入正确,请参阅跟踪...

代码

// 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

1 个答案:

答案 0 :(得分:0)

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

输入指定了时区:

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];

似乎过度杀伤但是有效