如何确定给定(本地)日期的时区

时间:2019-06-14 16:03:12

标签: swift

从API中,我得到以下两个日期字符串。这些日期显示了位于某个时区的气象站的气象观测时间。

dateUTC =“ 2019-06-14T18:00:00Z” dateLocal =“ 2019-06-14 20:00:00”

如何确定气象站所在的时区? (而不是用户所在的时区!)

我尝试使用DateFormatter,但是不幸的是,本地日期会立即转换为GMT-然后与UTC日期相同。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let dateUTC = dateFormatter.date(from: current.currentObservation[0].timeUTC)!
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateLocal = dateFormatter.date(from: current.currentObservation[0].timeLocal)!

我希望看到上述日期的结果: 时区= GMT + 2

1 个答案:

答案 0 :(得分:0)

答案非常简单-仍然有好几个小时都没有看到。诀窍是为DateFormatter设置一个timeZone。

            let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
        let dateUTC = dateFormatter.date(from: current.currentObservation[0].timeUTC)!
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
        let dateLocal = dateFormatter.date(from: current.currentObservation[0].timeLocal)!

        let difference = Calendar.current.dateComponents([.second], from: dateUTC, to: dateLocal).second!