我正在使用NSDate格式化程序从Facebook Graph API请求(位于GMT中)获取日期,并将其转换为用户的本地时区。我可以很好地读取日期并设置新的时区,但是当我打印出新日期时,它似乎没有考虑夏令时。
下面的时间实际上来自请求,但是例如,在这里,我只是从Facebook响应中输入标准时间字符串
NSString *time = @"2012-04-12T15:25:09+0000"
NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:localZone];
[formatter setDateFormat:@"yyyy-mm-dd'T'HH:mm:ssZZZZ"];
NSDate *date = [formatter dateFromString:time];
[formatter setDateFormat:@"eee MMM dd, yyyy hh:mm a"];
NSString *dateStr = [formatter stringFromDate:date];
NSLog(@"%@",dateStr);
当它打印该日期时,它会打印出“Thu Jan 12,2012 10:25 AM”,它对应于“America / New_York”时区,即我所在的时区,这是错误的。我应该是“Thu Jan 12,2012 11:25 AM”或一个小时前。有没有办法强制日光节约时间?提前致谢!
编辑:
我注意到它实际上是错误地格式化了月份。由于某种原因,它需要4月,而使其成为1月。为什么会这样呢?
最佳答案
当它打印该日期时,它会打印出“Thu Jan 12,2012 10:25 AM”,它对应于“America / New_York”时区,即我所在的时区,这是错误的。
不。夏令时直到三月才开始,因此在该时间应用夏令时是错误的。 NSDateFormatter
在这里做正确的事。
如果要强制使用特定的GMT偏移量,则应使用NSTimeZone timeZoneForSecondsFromGMT:
而不是localTimeZone
。
关于iphone - NSDateFormatter夏令时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10127704/