日期格式化程序/ISO8601日期格式化程序无法从字符串中获取日期



如何使用 ISO8601DateFormatter 将字符串转换为日期?

let iSO8601DateFormatter = ISO8601DateFormatter()
let string = iSO8601DateFormatter.string(from: Date()) //2019-12-04T08:23:27Z
let date = iSO8601DateFormatter.date(from: string)  //nil ?

上面的代码在带有Xcode 8的iPhone11.2.1模拟器中运行,我得到零。

但它在同一个 Xcode 的游乐场中工作。

谁能帮我指出我做错的地方?

这似乎是 Xcode11 和 swift 5 中的一个错误。日期实际上不是 nil,但在调试中,它显示为 nil。

let date = Date()
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withInternetDateTime]
let dateString = formatter.string(from: date)
if let myDate = formatter.date(from: dateString){
print(myDate) //2019-12-08 02:22:26 +0000
}

您可以在此SO帖子中查看有关该错误的更多信息

您可以将 iSO8601 日期格式指定到 NSDateFormatter 以获取日期:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd'T'HHmmssZ"
let date = dateFormatter.date(from: dateString)
print(date) //2019-12-04 12:46:00 +0000

您可以在此处查看日期格式的类型。

我希望这对您有所帮助。

最新更新