ntimezone 2小时错误



我使用下面的代码将我的时区设置为欧洲斯德哥尔摩。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Stockholm"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *webUpdateDate = [dateFormatter dateFromString:@"2011-07-22 22:10"]; 
// Outputs "2011-07-22 20:10 +0000"

有人知道为什么吗?

我假设您正在使用NSLog检查日期。一个NSDate对象表示一个绝对时间——它没有时区的概念,所以当它被要求它的description时,它显示的就好像它是GMT时间一样。如果希望以斯德哥尔摩时区表示绝对时间,则需要再次使用日期格式化程序:

NSLog(@"%@", [dateFormatter stringFromDate:webUpdateDate]);

由于日期最初是通过格式化程序创建的,它已经将其时区设置为Stockholm,因此我相信这将为您提供用于输入的相同字符串:@"2011-07-22 22:10" .

相关内容

最新更新