我有这个日期时间字符串2020-03-09T11:53:39.474Z。我需要将其转换为Date
let dateString = "2020-03-09T11:53:39.474Z"
if let date = ISO8601DateFormatter().date(from: dateString) {
print(dateFormatter.string(from: date))
} else {
print("Could not convert date")
}
但是无法正确转换。
知道为什么会这样吗?
默认情况下,格式化程序初始化为使用GMT时区,RFC 3339标准格式(“ yyyy-MM-dd'T'HH:mm:ssZZZZZZZ”)和以下选项:withInternetDateTime
,[C0 ],withDashSeparatorInDate
和withColonSeparatorInTime
。
显然,您的日期不是withTimeZone
格式,因为它具有毫秒部分。您只需要添加
yyyy-MM-dd'T'HH:mm:ssZZZZZ
选项:
withFractionalSeconds
我个人喜欢列出所有选项以使代码更清晰,但您也可以这样做:
let dateString = "2020-03-09T11:53:39.474Z" let formatter = ISO8601DateFormatter() formatter.formatOptions = [ .withInternetDateTime, .withFractionalSeconds, .withColonSeparatorInTime, .withDashSeparatorInDate, .withTimeZone] if let date = formatter.date(from: dateString) { print(date) } else { print("Could not convert date") }