Swift\'s JSONDecoder offers a dateDecodingStrategy property, which allows us to define how to interpret incoming date strings in accordance with a
There are a few ways to deal with this:
DateFormatter subclass which first attempts the date-time string format, then if it fails, attempts the plain date format.custom Date decoding strategy wherein you ask the Decoder for a singleValueContainer(), decode a string, and pass it through whatever formatters you want before passing the parsed date outDate type which provides a custom init(from:) and encode(to:) which does this (but this isn't really any better than a .custom strategy)init(from:) on all types which use these dates and attempt different things in thereAll in all, the first two methods are likely going to be the easiest and cleanest — you'll keep the default synthesized implementation of Codable everywhere without sacrificing type safety.