我正在使用以下代码将我的时区设置为欧洲斯德哥尔摩。
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"
任何人都知道为什么?
答案 0 :(得分:3)
我假设您正在使用NSLog
检查日期。 NSDate
对象代表一个绝对时间 - 它没有时区概念,因此当它被要求提供description
时,它显示为好像是GMT中的时间。如果您想要为斯德哥尔摩时区表示的绝对时间,则需要再次使用日期格式化程序:
NSLog(@"%@", [dateFormatter stringFromDate:webUpdateDate]);
由于日期最初是通过格式化程序创建的,格式化程序已将其时区设置为斯德哥尔摩,因此我相信这将为您提供与输入时使用的字符串相同的字符串:@"2011-07-22 22:10"
。