我正在开发一个从后端接收事件的应用程序。日期以UTC + 0时区返回。该应用必须在设备时区中显示开始时间。因此,我开发了一个函数来重新计算日期。
到目前为止,我在英国,并且将设备时区更改为西班牙。我写的代码是:
static func reCalculateDeviceDate(from date: Date?) -> Date? {
guard let date = date else { return nil }
print("Input date: ", date)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
dateFormatter.timeZone = .current
dateFormatter.locale = Locale.current
let dateString = dateFormatter.string(from: date)
let outputDate = dateFormatter.date(from: dateString)
print("Recalculate date in string format: ", dateString)
print("Output Date: ", outputDate!)
return dateFormatter.date(from: dateString)
}
输出:
Input date: 2020-02-10 15:47:43 +0000
Recalculated date in string format: 2020-02-10 16:47:43
Output Date: 2020-02-10 15:47:43 +0000
尽管dateString显示了重新计算的日期,但它是错误创建的outputDate。
我想念什么?
dateString
)获得了正确的字符串表示形式print
函数采用字符串形式的description
属性。此值等于时区+0000的表示形式,即英国格林威治本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句