Swift 未发生从字符串的日期转换

Swift 未发生从字符串的日期转换,swift,nsdate,nsdateformatter,Swift,Nsdate,Nsdateformatter,我有一个日期在2018年5月31日下午3点35分的order\u date格式中 我正在把它转换成日期,就像这样 if let order_date = value["order_date"] as? String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let date = dateFormatter.date(from: order_date) }

我有一个日期在2018年5月31日下午3点35分的
order\u date
格式中

我正在把它转换成日期,就像这样

if let order_date = value["order_date"] as? String {

let dateFormatter = DateFormatter()

dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

let date = dateFormatter.date(from: order_date)

}

但我得到的日期是零。可能是什么问题?

您的日期格式错误,请将格式更改为

dateFormatter.dateFormat = "MMMM dd, yyyy 'at' hh:mm a"
例如,如果您的月份为
Mar
则使用-MMM,如果您的月份为
March
则使用-MMMM

你可以查一下日期格式

完整的答案

 if let order_date = value["order_date"] as? String {

let dateFormatter = DateFormatter()
 dateFormatter.dateFormat = "MMMM dd, yyyy 'at' hh:mm a"
  var date = dateFormatter.date(from: order_date)
    if date == nil{
        dateFormatter.dateFormat =  "yyyy-MM-dd HH:mm:ss"
        date = dateFormatter.date(from: order_date)
    }
 dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
 let myStringafd = dateFormatter.string(from: date!)
 print(myStringafd)

}

有关MT转换的详细日期,请将代码替换为以下内容:

if let order_date = value["order_date"] as? String
    {

        let dateFormatter = DateFormatter()

        dateFormatter.dateFormat = "MMM dd, yyyy 'at' hh:mm a"

        let date = dateFormatter.date(from: order_date)

    }

日期是否符合您给出的格式?我不认为在'hh:mm a'@FredericP我以这种格式发送时,会像这样更改您的日期格式化程序。
yyy-mm-dd hh:mm:ss
。但在服务器中,某些日期的格式为2018年5月31日下午3:35。因此,问题是…@bwv-您得到的输入和您期望的OP是什么。@Anbu.karthik
“mm dd,yyyy”在“hh:mm a”
处的格式并不总是这样。它可以是
am
pm
,但@Anbu.karthik不是
“MMMM dd,yyyyy”在“hh:mm a”
总是在上午?在我的情况下,可能是上午或下午PM@bwv-根据时间格式,它将更改为上午或下午,这是12小时的日期格式。@Anbu.karthik在您给出的答案中,我们是否应该给出检查日期格式的if条件。。?因为我将在订单中获得的日期可以是'hh:mm a'处的格式
“MMMM dd,yyyy”或
“yyy-mm dd hh:mm:ss”
@bwv-检查更新的答案