NSDateFormatter关闭了一个小时

时间:2012-02-27 17:05:58

标签: iphone objective-c ios ipad nsdateformatter

我正在尝试从RSS Feed中格式化日期:

  

Mon,27 Feb 2012 10:33:00 EDT(来自RSS提要的格式)

要:

  

星期一,2012年2月27日上午10:33

以下是我在代码中所做的事情:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE, d MM yyyy HH:mm:ss zzz"];  

NSDate *date = [dateFormat dateFromString:@"Mon, 27 Feb 2012 10:33:00 EDT"];

[dateFormat setDateFormat:@"EE, d MMM yyyy hh:mm a"];

formatedDateLabel.text = [dateFormat stringFromDate:date];

[dateFormat release];

然而,这总是输出:

  

星期一,2012年2月27日上午9:33

请注意,我的设备已设置为EST。我已经尝试调整日期格式化程序以匹配EDT,但这似乎没有任何区别。

关于我做错了什么想法?

1 个答案:

答案 0 :(得分:2)

你没有做错任何事。发生这种情况的原因是因为NSTimezone的EDT和EST的内部表示是相同的:

// These objects are the same:
[NSTimeZone timeZoneWithAbbreviation:@"EST"];
[NSTimeZone timeZoneWithAbbreviation:@"EDT"];

NSDateFormatter dateFromString:非常聪明,知道2月标记为EDT的日期应该具有-4而不是-5的GMT偏移,即使这不是一个格式良好的日期。但是当你用它来显示日期时,如果它的时区被设置为EST或EDT(它被视为同一个东西),它将根据夏令时是否有效使用适当的时区时间。