【问题标题】:How to get GMT value for each timezone from knownTimeZoneNames如何从 knownTimeZoneNames 获取每个时区的 GMT 值
【发布时间】:2016-05-25 10:19:46
【问题描述】:

我知道如何获取已知时区列表:[NSTimeZone knownTimeZoneNames]

但此方法仅返回时区名称(如“Africa/Abidjan”)。

如何从该数组中获取每个已知时区的 GMT 值(如 GMT+3GMT-7)?

【问题讨论】:

    标签: ios objective-c nstimezone


    【解决方案1】:

    一般情况下,为每个时区名称创建一个NSTimeZone 实例,然后从每个实例中获取secondsFromGMT 属性:

    for (NSString *name in [NSTimeZone knownTimeZoneNames]) {
        NSTimeZone *tz = [NSTimeZone timeZoneWithName:name];
        NSInteger gmtOffset = tz.secondsFromGMT;
    }
    

    唯一未解决的问题是将秒数转换为小时或小时/分钟,这应该不会太难。也许默认的[NSTimeZone description] 会返回正确的信息?

    【讨论】:

    • 非常感谢。实际上,我现在通过阅读苹果文档发现了同样的方法)))
    • 请记住,结果并不总是相同的。 :)
    【解决方案2】:

    你也可以使用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"。您不需要从小时和分钟构建它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 2018-02-12
      • 2013-05-05
      相关资源
      最近更新 更多