从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
答案 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!