来自字符串的 Swift 日期总是返回 nil

use*_*331 2 nsdateformatter ios swift

我有一个日期,它是一个看起来像这样的字符串:

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!)
Run Code Online (Sandbox Code Playgroud)

SLAIssuedFinalGradingDate总是返回零,我做错了什么?

Kaz*_*mun 5

你的dateFormatforApr 25 2018 12:00AM是不对的。您正在使用M dd yyyy h:mm A,但格式将为MMM dd yyyy hh:mma.
使用此链接检查日期格式

代码应该是:

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!)
Run Code Online (Sandbox Code Playgroud)