LoginSignup
0
0

More than 5 years have passed since last update.

【Swift】ISO8601形式でString→Date変換とZulu time

Last updated at Posted at 2018-11-02

基本的には「iOSでISO8601を扱う」の記事で書いてあるように、ISO8601DateFormatter を使って実装すれば問題ない。

iso8601DateFormatter.swift
let formatter = ISO8601DateFormatter()
let date = formatter.date(from: "2018-02-14T00:51:31+09:00")

ただし、たまに
2017-12-27T03:00:35.000Z
のように末尾に Z がつくものがある。

Zって何?

Zulu timeの略で、UTCと同義らしい。
https://ejje.weblio.jp/content/Zulu+time

このような末尾がZの時(Zulu time)は、 formatOptions というオプションセットのプロパティがあるので、 [.withInternetDateTime, .withFractionalSeconds]
の2つを渡すことでString→Date変換できる。

実装の仕方はこのスタックオーバーフローの記事を参考に。

テストケース

zuluToDate.swift
func testDateFromString() {
    let formatter = ISO8601DateFormatter()
    formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
    let dateString = "2017-12-27T03:00:35.000Z"
    let date = formatter.date(from: dateString)

    XCTAssertNotNil(date)
}
0
0
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
0
0