为什么将日期从字符串对象转换为日期对象在 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"