我被这种行为感到困惑:为什么dateformatter.date()默认返回UTC?
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年4月12日11时12分12秒UTC
为什么结果自动转换为UTC?我怎样才能获得相同的时区?
处理一个标准化系统(如Unix时间戳或UTC时间)使得处理这个数据MUUUUUUCH更容易。当你比较两个表示相同时间点但在不同时区的'Date'实例时,你会期望发生什么? – Alexander
是的,这是有道理的。但我如何实现上述目标? – Houman
可以这样想:Date是表示时间的数据类型。它不知道任何关于时区,日期,月份,年份等的信息。无论您是希望在格林威治时间格林威治标准时间+1还是中国日历中及时表达某一时刻,代表它们的“日期”都是一样。这是其他'DateFormatter'和其他像它一样的结构(例如'Calendar','DateComponents')的工作,可以根据某些规则集合(日历系统指定的)将'Date'转换为人类表示)。 – Alexander