GithubのAPIやQiitaのAPIなどのレスポンスに含まれている日付はISO8601フォーマットになっています。
その形式をSwiftのDate型で扱うために、下記のようにDate
のextension
を実装していきます。
Date+ISO8601.swift
extension Date {
private static let ISO8601Formatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZ"
return dateFormatter
}()
init?(fromISO8601 string: String) {
guard let date = Date.ISO8601Formatter.date(from: string) else {
return nil
}
self = date
}
}
上記のextensionを利用することで、下記のように扱うことができるようになります。
let dateString = "2014-07-31T05:56:19Z"
let date = Date(fromISO8601: dateString) // Optional(2014-07-31 05:56:19 +0000)