比较Swift中的日期忽略当前时区
在Swift中,我可以使用比较Swift中的日期忽略当前时区,swift,Swift,在Swift中,我可以使用Calendar.current.dateComponents 问题是,这与我当前的时区不同 let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm XXX" let from = zoneFormatter.date(from: "2018-03-25 00:00 +00:00")! let to = zoneFormatter.date(from: "2018-03-26 0
Calendar.current.dateComponents
问题是,这与我当前的时区不同
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm XXX"
let from = zoneFormatter.date(from: "2018-03-25 00:00 +00:00")!
let to = zoneFormatter.date(from: "2018-03-26 00:00 +00:00")!
let components = Calendar.current.dateComponents([.month, .day, .hour, .minute], from: from, to: to)
// components is 1 day, 1 hour, because I am in UK and Daylight Savings started on 25 March.
如何检索以
dateComponents
返回的相同格式指定的两个瞬间之间的绝对差值?不正确的日期格式字符串
看起来您的约会使用了不正确的格式。指定日期“2018-03-25 00:00+00:00”
的日期格式实际上是“yyy-MM-dd HH:MM-ZZZZZ”
。尝试一下这种格式,应该可以解决这个问题
为什么不正确的格式不适用于时区之间的比较
这是因为格式字符串的时区组件不正确。这意味着在比较中不会考虑时区。日历的时区。可以通过如下设置系统默认时区来更改当前的:
NSTimeZone.default = NSTimeZone(abbreviation: "UTC")! as TimeZone
我还有1天1小时。我正在寻找一个忽略当前时区的比较,即1天0小时。如果可能,请尝试使用一天的中间时间(以及正确的格式
ZZZZ
)。比如“2018-03-25 12:00+00:00”。这对我来说是可行的,但我没有调查为什么“00:00”还不起作用。我想这是关于“00:00”时间的解释。“2018-03-25 23:59:59+0000”也行。