通过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<Date>
▿ 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!