从当前时区转换为 UTC 是不正确的 swift [重复]

Posted

技术标签:

【中文标题】从当前时区转换为 UTC 是不正确的 swift [重复]【英文标题】:Converting from Current TimeZone to UTC is incorrect swift [duplicate] 【发布时间】:2018-05-18 14:29:46 【问题描述】:

我有一个函数可以将时间从我当前的 TimeZone 转换为 UTC。

static func sendFormattedTimeString(_ string: String?) -> String 
    let dateFormatterGet = DateFormatter()
    dateFormatterGet.dateFormat = "HH:mm"
    dateFormatterGet.timeZone = TimeZone.current

    let dateFormatterPrint = DateFormatter()
    dateFormatterPrint.dateFormat = "HH:mm:ss"
    dateFormatterPrint.timeZone = TimeZone(identifier: "UTC")
    if let string = string,
        let date = dateFormatterGet.date(from: string) 
        return dateFormatterPrint.string(from: date)
    
    else 
        print("There was an error decoding the string")
        return ""
    

我的位置是白俄罗斯。现在是格林威治标准时间 +3。但在 UTC 中返回 +1。 例子: 我现在的时间:16:00。 UTC 返回:14:00。

有什么问题?感谢您的回答。

【问题讨论】:

您的预期结果是什么?如果是 GMT +3 的 16:00,那么它是 GMT +1 的 14:00。这对我来说是正确的。 UTC - 它是 GTM 0。此函数需要返回 GTM 0 - 13:00。但它返回 14:00 我在我的时区 +5:30 试了一下,效果很好。您是否传递了“16:00”或任何其他字符串? 是的,我传递了不同的字符串。 【参考方案1】:

不要做上述所有事情,而是尝试使用 'TimeZone.current.secondsFromGMT()',它将返回秒数,您的工作会将其转换为小时和分钟。

【讨论】:

谢谢。我试过这个。但我不明白为什么转换不正确。 可能与夏令时有关。

以上是关于从当前时区转换为 UTC 是不正确的 swift [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UTC 日期时间字符串转换为用户的当前时区?

iOS:将 UTC NSDate 转换为本地时区

时区转换从 UTC 到新时区

如何从 UTC 转换为 tzutc() 时区?

python / pytz问题从本地时区转换为UTC然后返回

将 Postgres 中没有时区的 DateTime 字段从中欧时间转换为 UTC