时区转换

通过Date获取的时间格式为格林时间,零时区时间
通过DateFormatter转换的时间 为添加了与零时区差值的系统显示时间

 let formatter = DateFormatter()
 formatter.dateFormat = "yyyy-MM-dd hh:mm:ss"

(lldb) po Date()
▿ 2018-07-26 21:55:53 +0000
  - timeIntervalSinceReferenceDate : 554334953.136796

(lldb) po formatter.string(from: Date())
"2018-07-26 02:56:16"

(lldb) po formatter.date(from: formatter.string(from: Date()))
▿ Optional
  ▿ some : 2018-07-26 09:56:51 +0000
    - timeIntervalSinceReferenceDate : 554291811.0

DateFormatter每转换一次时间格式 都会添加一次添与零时区差值的
有时
我们需要转换时间格式后对应的时区不变 就需要对DateFormatter 添加对应的时区

//创建时区 :零时区
let timeZone = TimeZone.init(secondsFromGMT: 0)
let timeZone = TimeZone(secondsFromGMT: 0)
formatter.timeZone = timeZone!

这样无论通过DateFormatter转换多少次格式都是零时区时间

当需要系统时区的时间时 在重新设置下时区 即可

let timeZone = TimeZone(secondsFromGMT: NSInteger(Date().timeIntervalSince1970))
formatter.timeZone = timeZone!

你可能感兴趣的:(时区转换)