如何将 JSONDecoder / Codable 与这种日期格式一起使用?
How can I use JSONDecoder / Codable with this date format?
我从 API 中得到以下日期。
{
"createdDate": "2019-03-22T15:53:06.663Z"
}
我想对此进行解码并将其存储为 Date
类型。
但是我的 JSONDecoder
无法解码。
我尝试用
扩展它
extension DateFormatter {
static let iso8601Full: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
}
然后使用 decoder.dateDecodingStrategy = .formatted(DateFormatter.iso8601Full)
但这不起作用
使用 ISO8601DateFormatter
和格式选项
let str = "2019-03-22T15:53:06.663Z"
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withFullDate, .withFullTime, .withTimeZone, .withFractionalSeconds]
let date = formatter.date(from: str)
我从 API 中得到以下日期。
{
"createdDate": "2019-03-22T15:53:06.663Z"
}
我想对此进行解码并将其存储为 Date
类型。
但是我的 JSONDecoder
无法解码。
我尝试用
扩展它extension DateFormatter {
static let iso8601Full: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
}
然后使用 decoder.dateDecodingStrategy = .formatted(DateFormatter.iso8601Full)
但这不起作用
使用 ISO8601DateFormatter
和格式选项
let str = "2019-03-22T15:53:06.663Z"
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withFullDate, .withFullTime, .withTimeZone, .withFractionalSeconds]
let date = formatter.date(from: str)