我知道如何获取已知时区列表:[NSTimeZone knownTimeZoneNames]
。
但是此方法仅返回时区名称(例如“Africa / Abidjan”)。
如何从该数组中获取每个已知时区的GMT值(如GMT+3
或GMT-7
)?
答案 0 :(得分:1)
通常,为每个时区名称创建一个NSTimeZone
实例,然后从每个实例中获取secondsFromGMT
属性:
for (NSString *name in [NSTimeZone knownTimeZoneNames]) {
NSTimeZone *tz = [NSTimeZone timeZoneWithName:name];
NSInteger gmtOffset = tz.secondsFromGMT;
}
唯一突出的问题是从几秒钟转换为几小时或几小时/分钟,这不应该太困难。也许默认的[NSTimeZone description]
会返回正确的信息吗?
答案 1 :(得分:0)
您还可以使用方法timeZoneForSecondsFromGMT
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT];
NSMutableString *name = [NSMutableString stringWithString:timeZone.name];
if (! [name isEqualToString:@"GMT"])
{
[name insertString:@":" atIndex:6];
}
return [NSString stringWithString:name];
输出为@"GMT+03:00"
。你不需要从几小时到几分钟来构建它。