将字符串转换为 NSDate,时区错误

Converting String to NSDate, wrong time zone

如何将 String 转换为 NSDate,然后再转换回 String?

我试过这样做:

//String to NSDate
let dateString = "2016-07-07T18:09:41Z"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.dateFromString(dateString)

//NSDate to String
let formatter = NSDateFormatter()
formatter.dateFormat = "HH:mm"
formatter.locale = NSLocale(localeIdentifier: "en")
let time = formatter.stringFromDate(date!)

我的时间是 21:09,尽管它是 18:09。设置语言环境什么都不做。我想我做错了什么,只是不确定是什么。

Locale 不设置时区,它只是帮助将格式设置为用户的区域设置和首选项。显式设置 timeZone 以获得您想要的结果。例如,要将时区设置为系统时区,请尝试:

dateFormatter.timeZone = NSTimeZone.systemTimeZone()

formatter.timeZone = NSTimeZone.systemTimeZone()