将 String 转换为 NSDate 时减去小时

On hour is subtracted when converting a String to NSDate

这是代码:

let dateString = "2015-07-13T17:32:32.781Z"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.SSS'Z'"
var theDate = dateFormatter.dateFromString(dateString)!
println(theDate)  // 2015-07-13 16:32:32 +0000

在此过程中,原始日期减去一小时。为什么?

@mipadi 已经很好地解释了这个问题,所以我认为你应该将时区设置为 UTC。

    let dateString = "2015-07-13T17:32:32.781Z"
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.SSS'Z'"
    dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
    var theDate = dateFormatter.dateFromString(dateString)!
    println(theDate)