iOS 获取没有 DST 偏移的时区字符串

标签 ios swift date

我正在寻找时区列表,但在尝试生成时区列表时,我得到了添加到其中的 DST 偏移量。但我想要标准时间,而不是 DST 时间。 这是我正在使用的代码。对于丹麦,我得到的是 GMT+2 而不是 GMT+1

    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .long
    dateFormatter.dateFormat = "ZZZZ"

    let list = TimeZone.knownTimeZoneIdentifiers
    for (i, city) in list.enumerated() {
        let timezone = TimeZone(identifier: city)
        dateFormatter.timeZone = timezone

        var isSupportDST = false
        if timezone?.nextDaylightSavingTimeTransition != nil {
            isSupportDST = true
        }

        let date = Date()
        var timezoneString = dateFormatter.string(from: date)

        if timezoneString.count > 3 {
            timezoneString.insert(" ", at: timezoneString.index(timezoneString.startIndex, offsetBy: 3))
        }
        if timezoneString.count > 5 {
            timezoneString.insert(" ", at: timezoneString.index(timezoneString.startIndex, offsetBy: 5))
        }

        var formattedCityName = city
        formattedCityName = city.replacingOccurrences(of: "_", with: " ")

        var dstoffset = 0 as TimeInterval
        if let offset = timezone?.daylightSavingTimeOffset(){
            dstoffset = offset
        }

        let cityWithTimezone = CityWithTimeZone(city: formattedCityName, timeZoneString: timezoneString, timeZoneInSeconds: timezone?.secondsFromGMT() ?? 0, dstOffset: dstoffset, isDSTSupport: isSupportDST)
        cityList.insert(cityWithTimezone, at:i)
    }

最佳答案

请尝试像这样设置格式化程序的时区

let timezone = TimeZone(identifier: city)
dateFormatter.timeZone = TimeZone(secondsFromGMT: TimeZone.current.secondsFromGMT())

它将正确设置当前时间。

关于iOS 获取没有 DST 偏移的时区字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56752467/

相关文章:

swift - 添加泛型类型继承的正确方法

php - 选择两个日期之间的数据

java - 检查 Date 对象和 Calendar 对象是否在同一个月的最有效方法

ios - 我如何在 UIimage 中嵌入标题以导出到电子邮件

iphone - 如何添加搜索栏以从选择器 View 中选择排序的数据

ios - 域 = AVFoundationErrorDomain ,代码 = -11828

ios - 从 UITabbarController 中选择选项卡时如何更新 VC 中的值?

ios - 如何快速比较颜色

xcode - ConvertPointToView 函数在 Swift Xcode 7 Beta 中不起作用

javascript - 在 JavaScript 中将 mm-dd-yyyy 转换为日期