利用 withFractionalSeconds 解析 ISO 8601 帶有小數的秒
Published in
Jun 28, 2019
開發 iOS App 時,我們可以用 ISO8601DateFormatter 解析 ISO 8601 格式的字串,然而 ISO 8601 有許多格式,比方以下格式我們可以順利解析。
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from: "2018-12-01T10:00:05Z")
但當 ISO 8601 帶有小數的秒時,它就無法解析了,無情地產生 nil。
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from: "2018-12-01T10:00:05.000Z")
其實 ISO8601DateFormatter 還是可以解析它的,只是要額外於 property formatOptions 設定 ISO 8601 的格式。
比方以下例子,我們設定 [.withInternetDateTime, .withFractionalSeconds],withInternetDateTime 指的是標準的 ISO 8601 格式,而 withFractionalSeconds 則包含小數的秒。
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
let date = dateFormatter.date(from: "2018-12-01T10:00:05.000Z")