我有一个类似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
答案 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)