我想将此格式"2016-12-22T08:00:00-08:00"
中的dateString转换为用户本地时间的日期对象,例如当用户时间是UTC +05:30时,2016-12-22 21:30:00 +0530
OR
我希望dateString以这种格式"2016-12-22T08:00"
,当用户时间是UTC或{{1用户时间是UTC时间00:00
当我尝试下面的代码并打印dateObject时,它会打印2016-12-22 21:30:00 +0530
,但我希望2016-12-22 16:00:00 +0000
,因为我的当地时间是UTC的+05:30。
Optional(2016-12-22 02:30:00 +0000)
答案 0 :(得分:2)
将dateFormat
修复为:
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
删除timeZone
行。由于您的日期字符串指定了自己的时区,因此不需要它。
dateFormatter.timeZone = NSTimeZone.local // remove this line
现在你的代码工作正常。
“但等等,print(dataObject)
的输出不是我想要的”
是的。就像你之前的成千上万,你误解了打印Date
对象的输出。
如果您希望以给定格式查看当地时区的Date
,请使用DateFormatter
将Date
转换为String
。默认情况下,您将获得当前的本地时区。
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .long
dateFormatter.timeStyle = .long
let newString = dateFormatter.string(from: dateObject)
print(newString)
你得到你想要的东西。