如何从 Swift 中的服务器转换日期?

How to convert date from server in Swift?

我有一个结构应该给我来自服务器的正确日期,但它是零或者时间与本地时间不同,比如服务器 return 2021-09-08T20:52:47.001Z 但是当我想将它转换为 swift 我的代码为零的日期。

import Foundation
struct TimeManager{
    static func editTime(withTime time:String) {
        let serverDateFormatter:DateFormatter = {
            let result = DateFormatter()
            result.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSS"
            result.timeZone = .current
            return result
        }()
        let date = "2021-09-08T20:52:47.001Z"
        let dateformat = serverDateFormatter.date(from: date)
        print(dateformat)
    }
}

我已经在 Whosebug 中测试了所有 link。我测试了这个 link 也

您需要进一步了解如何设置 dateFormat 字符串。您忘记了字符串中的 Z。也作为警示。创建日期格式化程序对象非常昂贵。不要为每个要格式化的日期创建一个新日期。务必将其缓存并重复使用。

import Foundation

let serverDateFormatter:DateFormatter = {
    let result = DateFormatter()
    result.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SZ"
    result.locale = Locale(identifier: "en_US_POSIX")
    result.timeZone = TimeZone(secondsFromGMT: 0)
    return result
}()

let date = "2021-09-08T20:52:47.001Z"
let dateformat = serverDateFormatter.date(from: date)

print(dateformat as Any)