Created
April 12, 2018 01:14
-
-
Save hsleedevelop/8050de8fa2dd408aeeef0dc949861d12 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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