为什么日期格式会导致格式化程序崩溃?

Why does date format crash formatter?

为什么我到达下面的 df.date() 行,应用程序崩溃:

fatal error: unexpectedly found nil while unwrapping an Optional value

我也看到了这个:

error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

let mydate = "2016-12-27"
let df = DateFormatter()
df.dateFormat = "MM/dd/yyyy"
newDate = df.date(from: mydate)

我做错了什么?

你的代码是否可以编译,因为这一行 df = "MM/dd/yyyy" 会给你编译错误,df.date(from:) return 可选 Date? 实例所以如果你的 dateFormat 和字符串日期不匹配。现在您的日期格式是 yyyy-MM-dd。所以像这样更改您的代码。

let mydate = "2016-12-27"
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd"
if let date = df.date(from: mydate)  {
    df.dateFormat = "MM/dd/yyyy"
    let formattedDate = df.string(from: date)
    print(formattedDate)
}