系统时区与所选时区

时间:2011-10-25 06:31:47

标签: ios timezone nstimezone

  

比较两个时区的最佳方式是什么?

我在使用NSTimeZone方法比较两个- (BOOL)isEqualToTimeZone:(NSTimeZone *)aTimeZone实例时遇到了问题。

NSString *timeZoneName = ...

NSTimeZone *sytemTimeZone = [NSTimeZone systemTimeZone];
NSTimeZone *selectedTimeZone = [NSTimeZone timeZoneWithName:timeZoneName];

if ([sytemTimeZone isEqualToTimeZone:selectedTimeZone]) 
    isEqual = YES;  
else 
    isEqual = NO;

第1步:转到设置(应用)>一般>日期&时间>时区并搜索“奥斯汀”。您将获得的条目是“Austin,U.S.A”。选择此时区。这应该是你的新系统时区吧!

第2步:创建一个小型iPhone / iPad应用程序。使用[NSTimeZone knownTimeZoneNames]获取时区名称列表。然后试着找“奥斯汀”。它不存在!所以,我想我们可以用“America / Chicago”作为时区吗?

  

为什么Setting的时区列表与我们的不同?

第3步:现在将系统时区与“America / Chicago”的时区进行比较。他们不匹配。

1 个答案:

答案 0 :(得分:3)

我已经发布了一个错误 - 错误是Austin不在已知的时区列表中,但是由设置应用程序提供。

根据Apple工程师的说法:

  

两个NSTimeZones比较相等,名称和数据(如   返回-data)必须相等。你什么时候要小心   比较时区,因为两个区域可以有相同的偏移量   GMT但由于历史原因不是同一时区。记得   时区用于各种日历计算,   这意味着,如果在整个历史中,他们只是平等的   总是有相同的GMT偏移,相同的夏令时转换,   等等。