gpt4 book ai didi

ios - 将 UTC NSDate 转换为本地 NSDate 不起作用

转载 作者:行者123 更新时间:2023-11-28 12:37:30 27 4
gpt4 key购买 nike

我有一个从服务器获取的字符串 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z"我通过这个 formate 将这个字符串转换成 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 时,它​​再次显示我作为参数获得的日期和时间。

最佳答案

你不应该改变 NSDate 的时间。 NSDates 只是一个时间点,以秒计算。他们不知道时区、日、月、年、小时、分钟、秒……如果直接打印,他们将始终以 UTC 格式输出时间。
如果您更改日期以显示您所在时区的时间,您实际上是在更改 UTC 时间——因此您的日期将代表另一个时间点,而与时区无关。
通过不更改它们来保持它们的完整性,而是在您需要显示它们时通过日期格式化程序进行。
如果您需要进行独立于时区的时间计算,您也可以使用 NSDateComponents。

关于ios - 将 UTC NSDate 转换为本地 NSDate 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com