Xcode11,swift。日期格式化程序总是 return 无

Xcode 11, swift. Dateformatter always return nil

我在 Swift 中将值从 String 转换为 Date 时遇到问题。

它总是 returns 零。我做错了什么?

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: "2019-05-03")

这是 Xcode

中调试器中发生的情况

它没有 nil 值。使用 .dateFormat 而不是 .format 就这么简单:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: "2019-05-03")

// Optional(2019-05-02 23:00:00 +0000)

更新:

这似乎是 Xcode 中的错误。在 viewDidLoad 中尝试您的代码并设置断点会导致日期的 lldb 描述为 nil,但它会正确打印出预期值。

你可以在这个 SO 看到更多关于错误的信息,感谢 OOPer 的 link。

目前此错误仍在 Xcode 11.2-beta

中出现

几点

使用.dateFormat代替.format

使用正确的引号 " 而不是 ,您还应该从日期格式字符串中删除 space。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: "2019-05-03")