【发布时间】:2016-11-05 13:02:37
【问题描述】:
我有一个字符串从服务器获取为"yyyy-MM-dd'T'HH:mm:ss.SSS'Z"
我通过这个格式把这个字符串转换成 NSDate。
class func convertUTCDateToLocateDate(dateStr:String) -> NSDate{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let date = dateFormatter.dateFromString(dateStr)
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
let timeStamp = dateFormatter.stringFromDate(date!)
let dateForm = NSDateFormatter()
dateForm.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
dateForm.timeZone = NSTimeZone.localTimeZone()
let dateObj = dateForm.dateFromString(timeStamp)
return dateObj!
}
假设参数字符串是“2016-11-05T12:00:00.000Z”但是当我转换这个字符串并返回一个NSDate对象时,它不会根据我的当地时间改变时间。我在timeStamp 字符串中得到了正确的时间(在上面的代码中)。但是当我尝试将 timeStamp 字符串转换为 NSDate 时,它再次显示我作为参数获得的日期和时间。
【问题讨论】:
-
不要在您的日期格式中引用
Z。您不想要文字Z。您希望将其正确视为时区。
标签: ios swift nsdate nsdateformatter