Swift version: 5.4
Encoding and decoding dates using the
Codable protocol isn’t hard to do, but it does produce some unexpected data by default:
Date stores its information as a floating-point number counting the number of seconds since January 1st 2001, rather than something standard involved days, months, and years.
ISO-8601 is the web’s standard way of referring to dates and times, and looks like this: 2018-12-25T17:30:00Z – in English that’s December 25th 2018, at 5:30pm UTC. Both
JSONDecoder are able to use this date format rather than the floating-point default – all you have to do is set their
If you’re decoding dates, use this:
let decoder = JSONDecoder() decoder.dateDecodingStrategy = .iso8601
And if you’re encoding dates you should use this:
let encoder = JSONEncoder() encoder.dateEncodingStrategy = .iso8601
SPONSORED From August 2nd to 8th you can join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.