为什么dateformatter.date()默认返回UTC?

时间:2017-04-21 22:01:38

标签: swift

我对此行为感到困惑:

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?我怎样才能获得相同的时区?

1 个答案:

答案 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!))")