为什么将日期从字符串对象转换为日期对象在 Swift 中始终为 nil
Why does converting a Date from a String Object to a Date Object is always nil in Swift
我有以下日期字符串
2021-08-06T22:46:31+02:00
我正在尝试使用以下代码将其转换为 Date
对象,但它始终是 nil
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd'T'HHmmssZ"
print(dateFormatter.date(from: date) as Any)
在打印语句中我得到
nil
您得到 nil
是因为您的格式字符串与输入字符串不匹配。
您需要包括分隔破折号和冒号。
如果您修复了格式字符串,那么它将起作用:
let fm = DateFormatter()
fm.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
fm.date(from: str)
或者,由于您的日期无论如何都是 ISO 8601 格式,因此最简单的方法就是使用 ISO8601DateFormatter
.
let fm = ISO8601DateFormatter()
fm.date(from: str)
使用这种格式"yyyy-MM-dd'T'HH:mm:ssZ"
我有以下日期字符串
2021-08-06T22:46:31+02:00
我正在尝试使用以下代码将其转换为 Date
对象,但它始终是 nil
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd'T'HHmmssZ"
print(dateFormatter.date(from: date) as Any)
在打印语句中我得到
nil
您得到 nil
是因为您的格式字符串与输入字符串不匹配。
您需要包括分隔破折号和冒号。
如果您修复了格式字符串,那么它将起作用:
let fm = DateFormatter()
fm.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
fm.date(from: str)
或者,由于您的日期无论如何都是 ISO 8601 格式,因此最简单的方法就是使用 ISO8601DateFormatter
.
let fm = ISO8601DateFormatter()
fm.date(from: str)
使用这种格式"yyyy-MM-dd'T'HH:mm:ssZ"