let stringWithDate = "2015-07-16T6:08:32.000Z"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let dateComponents = NSDateComponents()
dateComponents.year = 2015
dateComponents.month = 7
dateComponents.day = 16
dateComponents.hour = 6
dateComponents.minute = 8
dateComponents.second = 32
let dateFromDateFormatter = dateFormatter.dateFromString(stringWithDate) //"Jul 16, 2015, 8:08 AM"
let dateFromDateComponents = NSCalendar.currentCalendar().dateFromComponents(dateComponents)! //"Jul 16, 2015, 6:08 AM"
dateFromDateFormatter == dateFromDateComponents //false
为什么这些日期不一样?
答案 0 :(得分:1)
经过一番挖掘后,我找到了解决方案:
NSDateFormatter
包含有关NSTimeZone
(Sting结束时Z
)的信息,而NSDateComponents
则没有。因此,我们需要简单地告知dateComponents
NSTimeZone
:
dateComponents.timeZone = NSTimeZone(abbreviation: "UTC")
输出日期现在相同。
将相同的信息添加到dateFormatter
:
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
不会改变任何内容,因为还有关于NSTimeZone
的信息。