字符串中的Swift日期始终返回nil

时间:2018-04-25 15:58:39

标签: ios swift nsdateformatter

我的日期是一个如下所示的字符串:

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总是返回nil,我做错了什么?

2 个答案:

答案 0 :(得分:3)

dateFormat Apr 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!)

答案 1 :(得分:0)

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

"MMM dd yyyy hh:mma"

这就是你所追求的。我建议您查看DateFormatter cheat sheet并熟悉这些符号。