はじめに
最近はDateをISO8601形式に変換して使うことが多いです。
後から見返してわかるようにまとめてみました。
DateからISO8601形式のStringに変換
let date = Date()
let dateFormatter = ISO8601DateFormatter()
dateFormatter.string(from: date)
ISO8601形式のStringからDateに変換
let dateString = "2023-04-05T22:32:10Z"
let dateFormatter = ISO8601DateFormatter()
dateFormatter.date(from: dateString)
ミリ秒を含んだISO8601形式
import Foundation
let dateString = "2023-04-05T22:32:10.123Z"
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = .withFractionalSeconds
dateFormatter.date(from: dateString)
デコード時にdateDecodingStrategy
を使用してミリ秒を扱うときは以下の記事
T
がない
import Foundation
let dateString = "2023-04-05 22:32:10Z"
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = .withSpaceBetweenDateAndTime
dateFormatter.date(from: dateString)
-
がない
import Foundation
let dateString = "20230405T22:32:10Z"
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = .withDashSeparatorInDate
dateFormatter.date(from: dateString)
:
がない
import Foundation
let dateString = "2023-04-05T223210Z"
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = .withColonSeparatorInTime
dateFormatter.date(from: dateString)
おわり
オプションは他にもたくさんあります。
今後、使うことがあれば追加していこうと思います。