Как я могу использовать JSONDecoder / Codable с этим форматом даты? - PullRequest
0 голосов
/ 23 марта 2019

Я получаю следующую дату от 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 Ответ

1 голос
/ 23 марта 2019

Использовать ISO8601DateFormatter с параметрами форматирования

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