iOS
Swift
ISO8601
Swift3.0

Swift3でISO8601フォーマットの文字列をDate型に変換する

More than 1 year has passed since last update.

GithubのAPIやQiitaのAPIなどのレスポンスに含まれている日付はISO8601フォーマットになっています。

その形式をSwiftのDate型で扱うために、下記のようにDateextensionを実装していきます。


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)