ios - 如何将 JSONDecoder/Codable 与此日期格式一起使用?

标签 ios swift nsdateformatter codable jsondecoder

我从 API 获取以下日期。

{
  "createdDate": "2019-03-22T15:53:06.663Z"
}

我想对其进行解码并将其存储为 Date 类型。

但是我的 JSONDecoder 无法对此进行解码。

我尝试用

扩展它
extension DateFormatter {
    static let iso8601Full: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
        formatter.calendar = Calendar(identifier: .iso8601)
        formatter.timeZone = TimeZone(secondsFromGMT: 0)
        formatter.locale = Locale(identifier: "en_US_POSIX")
        return formatter
    }()
}

然后使用decoder.dateDecodingStrategy = .formatted(DateFormatter.iso8601Full)但这不起作用

最佳答案

使用带有格式选项的 ISO8601DateFormatter

let str = "2019-03-22T15:53:06.663Z"
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withFullDate, .withFullTime, .withTimeZone, .withFractionalSeconds]
let date = formatter.date(from: str)

关于ios - 如何将 JSONDecoder/Codable 与此日期格式一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55316348/

相关文章:

iphone - 如何自定义 NSArray 字符串的排序顺序?

ios - destinationVC 和成员类型的问题

iphone - 获取下一个日期和前一天的日期

ios - NSDateFormatter 初始化与复制性能

ios - 当 View 具有嵌套的 Tabbar Controller 时,如何将右栏按钮添加到 UINavigationController?

ios - xcode 捕获异常 NSRangeException

ios - 向可拖动 View 添加手势? swift

ios - 将 CUnsignedChar 指针转换为 CChar 指针

ios - 全局设置 iOS 自动时间

ios - 如何在不转换为 Swift 中的任何时区的情况下将字符串更改为日期?