NSTimeZone和特殊时区等

时间:2014-05-27 01:17:08

标签: ios timezone nstimezone

假设iOS 7中的NSTimeZone timeZoneWithName:接受具有非特殊区域的时区ID(如America/New_York)和special area(如{{1}中所述),这是否正确?但是Etc/UTC永远不会返回特殊区域(但会返回例如NSTimeZone name)?

谁能证实这一点?

1 个答案:

答案 0 :(得分:4)

我认为这不是一个安全的假设。在OS X上,在我的时区和区域设置(美国英语,UTC-6)中,我可以运行以下代码:

    NSTimeZone *utc = [NSTimeZone timeZoneWithName:@"Etc/UTC"];
    NSTimeZone *london = [NSTimeZone timeZoneWithName:@"Europe/London"];
    NSLog(@"utc name = %@", [utc name]);
    NSLog(@"london name = %@", [london name]);

其中给出了以下输出:

  

utc name = Etc / UTC

     

伦敦名字=欧洲/伦敦

因此,如果某个时区在实例化时有一个特殊区域,它将继续使用其名称。作为一个复杂的复杂层,使用+timeZoneWithAbbreviation:也会得到不同的名称,例如:

    NSTimeZone *utc2 = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    NSLog(@"utc2 name = %@", [utc2 name]);
  

utc2 name = GMT