我对此行为感到困惑:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss zzz"
let result = dateFormatter.date(from: "2017-04-12 12:12:12 GMT+1")!
2017-04-12 11:12:12 UTC
为什么结果会自动转换为UTC?我怎样才能获得相同的时区?
答案 0 :(得分:1)
Date
个对象封装了一个时间点,与任何对象无关 特定的日历系统或时区。日期对象是 不可变的,表示相对于的不变时间间隔 绝对参考日期。
将UTC格式化为默认输出是一种国际标准。所有其他环境中的大多数系统/语言也通过此默认数据类型处理时间。
您可以更改输入/输出的格式。
let dateString = "Thu, 22 Apr 2017 00:28:17 +0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz"
dateFormatter.locale = Locale.init(identifier: "en_GB")
let dateObj = dateFormatter.date(from: dateString)
dateFormatter.dateFormat = "dd-MM-yyyy"
print("Dateobj: \(dateFormatter.string(from: dateObj!))")