Skip to content

Instantly share code, notes, and snippets.

@hsleedevelop
Created April 12, 2018 01:14
Show Gist options
  • Save hsleedevelop/8050de8fa2dd408aeeef0dc949861d12 to your computer and use it in GitHub Desktop.
Save hsleedevelop/8050de8fa2dd408aeeef0dc949861d12 to your computer and use it in GitHub Desktop.
enum DateError: String, Error {
case invalidDate
}
struct Spaceship : Codable {
var name: String
var createdAt: Date
}
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
let container = try decoder.singleValueContainer()
let dateStr = try container.decode(String.self)
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX"
if let date = formatter.date(from: dateStr) {
return date
}
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXXXX"
if let date = formatter.date(from: dateStr) {
return date
}
throw DateError.invalidDate
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment