LoginSignup
22
24

More than 5 years have passed since last update.

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

Posted at

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)
22
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
24