比较两个时区的最佳方式是什么?
我在使用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”的时区进行比较。他们不匹配。
答案 0 :(得分:3)
我已经发布了一个错误 - 错误是Austin不在已知的时区列表中,但是由设置应用程序提供。
根据Apple工程师的说法:
两个NSTimeZones比较相等,名称和数据(如 返回-data)必须相等。你什么时候要小心 比较时区,因为两个区域可以有相同的偏移量 GMT但由于历史原因不是同一时区。记得 时区用于各种日历计算, 这意味着,如果在整个历史中,他们只是平等的 总是有相同的GMT偏移,相同的夏令时转换, 等等。