NSTimeZone从两个不同的时区返回相同的本地化名称

时间:2017-10-28 09:12:07

标签: ios swift ios11

我有一个应用程序来计算两个位置之间的时差,我只是意识到选择“欧洲/伦敦”和“GMT”都返回相同的字符串“格林威治标准时间”

    buttonTimeZone.setTitle(timeZone?.localizedName(for: .standard, locale: locale), for: .normal)
    print("timeZone:\(String(describing: timeZone?.description))") 

按钮显示“格林威治标准时间”,但我相信格林威治标准时间和欧洲/伦敦有1小时的时差。

我添加了第二行print,以确保在测试时选择两个不同的区域。测试时间为2017年10月28日。

感谢您的投入!

1 个答案:

答案 0 :(得分:1)

我刚刚意识到伦敦正处于夏令时,因为时钟已经改变了。我所要做的就是在DST时将样式从.standard改为.daylightsaving。

    var title = timeZone?.localizedName(for: .standard, locale: locale)
    if (timeZone?.isDaylightSavingTime(for: dateTimeComplete!))! {
        title = timeZone?.localizedName(for: .daylightSaving, locale: locale)
    }
    buttonTimeZone.setTitle(title, for: .normal)