如果我尝试使用以下命令从应用程序中的任何位置任意设置时区:
[[NSCalendar currentCalendar] setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];
NSTimeZone *tz = [[NSCalendar currentCalendar] timeZone];
NSLog(@"%@", tz);
日志语句的结果是:
America/Los_Angeles (PDT) 偏移量 -25200(日光)
(这是我的本地时区,即 [NSTimeZone systemTimeZone])
但是,NSCalendar 上的一个类别中功能相似的代码可以正常工作:
[self setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];
NSTimeZone *tz = [self timeZone];
NSLog(@"%@", tz);
日志产生:
America/New_York (EDT) 偏移量 -14400(日光)
为 [NSCalendar currentCalendar] 设置时区是怎么回事?这种行为是违反直觉的。