如何将UTC日期转换为本地和本地转换为UTC?

时间:2017-09-14 10:34:03

标签: ios swift3 timezone utc

我想将日期从本地转换为UTC,将UTC转换为本地。

例如。 2015年4月1日,中午12:00是UTC然后

2015年4月1日,下午5:30对我来说是本地的,但我反过来了

let dateFormatter2 = DateFormatter()
dateFormatter2.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"[![enter image description here][1]][1]
dateFormatter2.timeZone = NSTimeZone.local
let date2 = dateFormatter2.date(from: "2015-04-01T12:00:00")


dateFormatter2.timeZone = NSTimeZone(name: "UTC")! as TimeZone
let date3 = dateFormatter2.date(from: "2015-04-01T12:00:00")

我将于2015年4月1日下午5:30收到UTC和 2015年4月1日,当地时间中午12:00

enter image description here

3 个答案:

答案 0 :(得分:2)

最后这对我有用

let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        dateFormatter.timeZone = NSTimeZone(name: "UTC")! as TimeZone
        let date = dateFormatter.date(from: "2015-04-01 12:00:00")
        print("UTC time",date!)

        dateFormatter.timeZone = NSTimeZone.local
        let timeStamp = dateFormatter.string(from: date!)

        print("Local time",timeStamp)

答案 1 :(得分:0)

本地时区始终基于为您的应用设置的默认时区。

来自Apple文档

  

返回一个对象,该对象将所有消息转发到当前应用程序的默认时区。

请尝试使用NSTimeZone.system。这将始终确保它将提供用户在iOS设置中设置的时区。

答案 2 :(得分:0)

试试这个:

let dateFormatter2 = DateFormatter()
dateFormatter2.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter2.timeZone = NSTimeZone.local
dateFormatter2.locale = Locale(identifier: "en_US_POSIX")
let date2 = dateFormatter2.date(from: "2015-04-01T12:00:00")


dateFormatter2.timeZone = TimeZone(identifier: "UTC")
let date3 = dateFormatter2.date(from: "2015-04-01T12:00:00")