【发布时间】:2018-11-03 02:21:50
【问题描述】:
有我的代码,我已经处理了时区,现在datepicker上的时间是正确的,但是datepicker上显示的时间还是错误的,使用Date()得到的当前时间也是错误的.
@IBAction func dateChanged(_ datePicker: UIDatePicker) {
let timeZone = NSTimeZone.system
let interval = timeZone.secondsFromGMT(for: datePicker.date)
let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .timeZone], from: datePicker.date.addingTimeInterval(TimeInterval(interval)))
remindDate = Calendar.current.date(from: dateComponents)!
print("+++++++++++++DatePicker: \(datePicker.date)++++++++++++++Date: \(remindDate)++++++++++++++Now: \(Date())+++++++++++++")
updateDateDetial(remindDate)
}
这是print()的结果:
+++++++++++++日期选择器:2018-05-25 02:44:33 +0000++++++++++++++++日期:2018-05- 25 10:44:00 +0000++++++++++++++++现在:2018-05-24 00:44:38 +0000+++++++++++++++
我从 datepicker 中选择的时间是 2018-05-25 10:44。现在时间应该是 2018-05-24 8:44:38。不过节目中的时间还是有差距的。
【问题讨论】:
-
在您开始以不必要的方式操作它们之前,没有一个日期是“错误的”。选择器上显示的日期/时间是您当地的时区。如果您只是从选取器中打印日期对象,它会以 UTC 显示,因此会有一个差异,即您的本地时区和 UTC 之间的差异,但是这两个时间代表相同的 时间点
-
查看following article 以帮助更好地理解
Date。
标签: ios swift timezone uidatepicker