0

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

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"

有谁知道为什么?

4

1 回答 1

3

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

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

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

于 2011-07-22T22:35:21.403 回答