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

时间:2016-12-27 04:51:49

标签: date swift3 nsdateformatter

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

  

致命错误:在解包可选值时意外发现nil

我也看到了这一点:

  

错误:执行被中断,原因: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)

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您的代码是否甚至编译,因为此行df = "MM/dd/yyyy"将为您提供编译错误,df.date(from:)返回可选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)
}

答案 1 :(得分:0)

我认为你打算这样做

df.dateFormat = "yyyy-MM-dd"

告诉DateFormatter对象解析传入的String对象。