我知道如何获得已知时区的列表:[NSTimeZone knownTimeZoneNames]。
但此方法只返回时区名称(如“Africa/阿比让”)。
如何从该数组中获得每个已知时区的GMT值(如GMT+3或GMT-7)?
发布于 2016-05-25 10:24:07
通常,为每个时区名称创建一个NSTimeZone实例,然后从每个实例中获取secondsFromGMT属性:
for (NSString *name in [NSTimeZone knownTimeZoneNames]) {
NSTimeZone *tz = [NSTimeZone timeZoneWithName:name];
NSInteger gmtOffset = tz.secondsFromGMT;
}唯一悬而未决的问题将是从秒转换为小时或小时/分钟,这应该不会太困难。也许默认的[NSTimeZone description]会返回正确的信息?
发布于 2017-08-22 15:47:46
您还可以使用方法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"。您不需要从几个小时和几分钟来构建它。
https://stackoverflow.com/questions/37434185
复制相似问题