将字符串转换为 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()
如何将 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()