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 Join a FREE crash course for iOS devs who want to become complete senior developers — from October 18th to 24th. Learn how to apply iOS app architecture patterns through a series of lectures and practical coding sessions.
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.