gpt4 book ai didi

swift - 在 ObjectMapper 中的 DateFormatterTransform 中设置自定义时区

转载 作者:行者123 更新时间:2023-11-30 11:13:01 31 4
gpt4 key购买 nike

我对 ObjectMapper 时间字符串解析相对较新,并且面临着一个巨大的问题。我有一个服务器以“yyyy-MM-dd'T'HH:mm:ss.SSZ”格式向我发送时间字符串,我应该在本地解析到我的 Date 对象中。我的服务器向我发送本地时区的日期,即 GMT+8,所以可以说我从服务器收到“2018-08-23T15:02:44.000Z”。我需要将其准确保存在我的领域文件中。我使用以下代码进行转换:

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSZ"
formatter.timeZone = TimeZone.current
recordDateTime <- (map["record_time"], DateFormatterTransform(dateFormatter: formatter))

但问题是,realm 中保存的日期对象是 2018-08-23 11:02:44 PM。我相信 DateFormatterTransform 接受 GMT 时区的日期字符串,因此它将其转换为我的本地时区,即 GMT+8。无论如何,我可以手动设置 DateFormatterTransform 的时区,这样我就不会发生时移吗?我们此时无法更改服务器,因为数据库非常大并且已经将每个日期存储在本地时区中。

请建议如何解决这个问题。谢谢

最佳答案

发现这是最快的解决方案:编写了一个自定义日期格式化程序,该格式化程序将在其 date(from: String) 方法中减去 GMT 偏移量。这是代码片段:

class MyDateFormatter : DateFormatter {

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

override init() {
super.init()
}

override func date(from string: String) -> Date? {
return super.date(from:string)?.addingTimeInterval(-8*60*60)
}

}

关于swift - 在 ObjectMapper 中的 DateFormatterTransform 中设置自定义时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52001166/

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