使用DateFormatter从字符串返回nil的日期

时间:2018-10-08 16:33:07

标签: ios swift date nsdate

我有一个类似yyyy-MM-dd的字符串,我想以此创建一个Date

static func dateFromStringWithBarra(date : String) -> String {
    print("DATE: \(date)")
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let date_from_format = dateFormatter.date(from: date)
    print("date_from_format: \(date_from_format)")
    dateFormatter.dateFormat = "dd/MM/yyyy"
    print("date_from_format: \(date_from_format)")
    return dateFormatter.string(from: date_from_format!) // <- nil
}

输出:

DATE: 2018-11-04 date_from_format: nil date_from_format: nil

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,仅通过将区域设置添加到DateFormatter中,我的问题就因某种原因得以解决:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "es_MX_POSIX")

希望有帮助。

答案 1 :(得分:-1)

关于该代码的一些事情:

1)不知道为什么要使用两种不同的日期格式 2)如果可能的话,应避免使用力解包,在这种情况下,警卫可能是个不错的选择。

这意味着代码应更像这样:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"

guard let date_from_format = dateFormatter.date(from: date) else {
    return ""
}
return dateFormatter.string(from: date_from_format)