如何使用这种日期格式使用JSONDecoder / Codable?

时间:2019-03-23 17:15:51

标签: 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),但这不起作用

1 个答案:

答案 0 :(得分:1)

ISO8601DateFormatter与格式设置选项一起使用

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