比较两个时区最好的方法是什么?
在使用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:转到设置(应用程序)>常规>日期和时间>时区并搜索“奥斯汀”。你会得到的条目是“奥斯汀,美国”。选择此时区。这应该是你的新系统时区了!
步骤2:创建一个小型iPhone/iPad应用程序。使用[NSTimeZone knownTimeZoneNames]获取时区名称的列表。那就去找“奥斯汀”。它不在那里!所以,我想我们可以用“美国/芝加哥”作为时区?
为什么设置的时区列表与我们的不同?
步骤3:现在比较“美国/芝加哥”的系统时区和时区。他们不匹配。
发布于 2011-11-24 08:00:23
我已经为这个发布了一个bug --这个bug是,奥斯汀不在已知的时区列表中,而是由设置应用程序提供的。
根据苹果工程师的说法:
对于两个
,要比较相等,名称和数据(作为-data的返回)必须相等。您在比较时区时必须小心,因为由于历史原因,两个区域可能与格林尼治时间有相同的偏移,但不是相同的时区。请记住,时区用于各种日历计算,这意味着它们只有在历史上始终具有相同的GMT偏移量、相同的夏时制转换等情况下才是相等的。
https://stackoverflow.com/questions/7885468
复制相似问题