我正在尝试从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,但这似乎没有任何区别。
关于我做错了什么想法?
答案 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(它被视为同一个东西),它将根据夏令时是否有效使用适当的时区时间。