title: Decodable multiple DateDecodingStrategies
body: <p>Is there a possibility to add multiple <a href="https://developer.apple.com/documentation/foundation/jsondecoder.datedecodingstrategy" rel="nofollow noreferrer"><code>JSONDecoder.DateDecodingStrategy</code></a> to a same <code>JSONDecoder</code>?</p>
  
  <p>I got a decodable:</p>
  
  <pre><code>struct Movie: Decodable {
      enum CodingKeys: String, CodingKey {
          case title = "display_title"
          case mpaaRating = "mpaa_rating"
          case criticsPick = "critics_pick"
          case byline
          case headline
          case summaryShort = "summary_short"
          case publicationDate = "publication_date"
          case openingDate = "opening_date"
          case dateUpdated = "date_updated"
          case link
          case multimedia
      }
  
  let title: String
  let mpaaRating: String
  let criticsPick: Int
  let byline: String
  let headline: String
  let summaryShort: String
  let publicationDate: Date
  let openingDate: Date?
  let updatedDate: Date
  let link: MovieLink
  let multimedia: MovieMultimedia
  var image: UIImage?
  
  
  init(from decoder: Decoder) throws {
      let values = try decoder.container(keyedBy: CodingKeys.self)
      try title = values.decode(String.self, forKey: .title)
      try mpaaRating = values.decode(String.self, forKey: .mpaaRating)
      try criticsPick = values.decode(Int.self, forKey: .criticsPick)
      try byline = values.decode(String.self, forKey: .byline)
      try headline = values.decode(String.self, forKey: .headline)
      try summaryShort = values.decode(String.self, forKey: .summaryShort)
      try openingDate = values.decodeIfPresent(Date.self, forKey: .openingDate)
      try publicationDate = values.decode(Date.self, forKey: .publicationDate)
      try updatedDate = values.decode(Date.self, forKey: .dateUpdated)
      try link = values.decode(MovieLink.self, forKey: .link)
      try multimedia = values.decode(MovieMultimedia.self, forKey: .multimedia)
  }
  
  mutating func loadImage(completion: @escaping (UIImage?, Error?) -&gt; ()) {
      URLSession.shared.dataTask(with: self.multimedia.src) { data, _, error in
          DispatchQueue.main.async {
              if let data = data {
                  let image = UIImage(data: data)
                  completion(image, error)
              }
          }
          }.resume()
      }
  }
  
  struct MovieLink: Decodable {
      enum CodingKeys: String, CodingKey {
          case type
          case url
          case suggestedLinkText = "suggested_link_text"
      }
  
      let type: String
      let url: URL
      let suggestedLinkText: String
  }
  
  struct MovieMultimedia: Decodable {
      let type: String
      let src: URL
      let height: Int
      let width: Int
  }
  </code></pre>
  
  <p>Now I got a problem because the API delivers different date formats. For pulicaion_date, opening_date the following pattern is used 2017-10-10.</p>
  
  <p>But for the date_updated they send the data formatted like 2017-10-10 12:21:02.</p>
  
  <p>When i set the <code>DateDecodingStrategy</code> of the <code>JSONDecoder</code> to .formatted(myDateFormatter) it crashed for the date_updated</p>
  
  <p>The decoder called this way</p>
  
  <pre><code>let decoder = JSONDecoder()
  let dateformatter = DateFormatter()
  dateformatter.dateFormat = "yyyy-MM-dd"
  decoder.dateDecodingStrategy = .formatted(dateformatter)
  let movieList = try! decoder.decode(MovieList.self, from: data!)
  </code></pre>
  
  <p>And crashes:</p>
  
  <pre><code>fatal error: 'try!' expression unexpectedly raised an error:
  Swift.DecodingError.dataCorrupted(
  Swift.DecodingError.Context(
    codingPath: [
      Test_App.MovieList.CodingKeys.movies, 
      Foundation.(_JSONKey in _12768CA107A31EF2DCE034FD75B541C9)(stringValue: "Index 0", intValue: Optional(0)),
      Test_App.Movie.CodingKeys.dateUpdated
    ], 
    debugDescription: "Date string does not match format expected by formatter.", 
    underlyingError: nil)
  )
  </code></pre>