Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用DateFormatter返回nil的字符串的日期_Ios_Swift_Date_Nsdate - Fatal编程技术网

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

Ios 使用DateFormatter返回nil的字符串的日期,ios,swift,date,nsdate,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 = dateFormatt

我有一个类似于
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
}
static func dateFromStringWithBarra(日期:String)->String{
打印(“日期:\(日期)”)
让dateFormatter=dateFormatter()
dateFormatter.dateFormat=“yyyy-MM-dd”
让date\u from\u format=dateFormatter.date(from:date)
打印(“来自格式的日期:\(来自格式的日期)”)
dateFormatter.dateFormat=“dd/MM/yyyy”
打印(“来自格式的日期:\(来自格式的日期)”)

return dateFormatter.string(from:date\u from\u format!)//关于该代码的一些内容:

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)

我也遇到了同样的问题,我的问题是通过向DateFormatter添加区域设置解决的:

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

希望能有所帮助。

在Swift操场上对我来说很好。(Xcode 10,Swift 4.2)我在游乐场也很好用。我能做什么?你确定你的
日期
字符串中没有空格吗?不,这是正确的。但我用
日期格式化程序解决。islenent=true
。我不知道为什么,但它是有效的。两种格式的要点是将日期字符串转换为不同格式的新日期字符串。你的代码是st返回相同的字符串,因此没有意义。而且您的答案无法解释问题。