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

时间:2016-07-19 16:35:56

标签: ios swift string nsdate

如何将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。设置区域设置什么也不做。我想我做错了什么,只是不确定是什么。

1 个答案:

答案 0 :(得分:2)

Locale没有设置时区,只是将格式设置为用户的区域设置和偏好设置。明确设置timeZone以获得所需的结果。例如,要将时区设置为系统时区,请尝试:

dateFormatter.timeZone = NSTimeZone.systemTimeZone()

formatter.timeZone = NSTimeZone.systemTimeZone()