Swift 字符串中的日期总是 returns 无

Swift date from string always returns nil

我有一个日期,它是一个字符串,如下所示:

Apr 25 2018 12:00AM

我想做的是将此日期格式转换为 yyyy-MM-dd,然后将其转换回字符串,我尝试了以下操作:

let formatter = DateFormatter()
            formatter.dateFormat = "M dd yyyy h:mm A"
            let SLAIssuedFinalGradingDate = formatter.date(from: tableDic["SLAIssuedFinalGradingDate"] as! String)
            formatter.dateFormat = "yyyy-MM-dd"
            let SLAIssuedFinalGradingDateString = formatter.string(from: SLAIssuedFinalGradingDate!)

但是SLAIssuedFinalGradingDate总是returns没有,我做错了什么?

您的 dateFormat 字符串不正确。如果 dateFormat 字符串与提供的字符串不匹配,DateFormatter 将始终 return nil。

"MMM dd yyyy hh:mma"

这就是您想要的。我建议您查看 DateFormatter cheat sheet 并熟悉这些符号。

你的 dateFormatApr 25 2018 12:00AM 不正确。您正在使用 M dd yyyy h:mm A,但格式为 MMM dd yyyy hh:mma.
Use this link to check date format

代码应该是:

let formatter = DateFormatter()
formatter.locale =  Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "MMM dd yyyy hh:mma"
let SLAIssuedFinalGradingDate = formatter.date(from: tableDic["SLAIssuedFinalGradingDate"] as! String)
formatter.dateFormat = "yyyy-MM-dd"
let SLAIssuedFinalGradingDateString = formatter.string(from: SLAIssuedFinalGradingDate!)