时区转换

通过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!
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容