dateFromString给出nil,swift

时间:2016-10-19 14:20:01

标签: ios swift exception nsdate

我正在尝试从String创建一个NSDate对象。我已经硬编码了我的字符串供你查看。当我在我的字符串上调用dateFromString时,结果将为nil,并且因为展开nil而得到异常。 我在下面粘贴了我的代码。

任何想法如何以正确的方式做到这一点?

非常感谢!

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd/MM/yyyy hh:mm"

    let timeToParse = "19/10/2016 16:10"

    let date = dateFormatter.dateFromString(timeToParse)
    //date = nil?

    dateFormatter.dateFormat = "yyyy/MM/dd hh:mmZZZ"
    let dateWithUTC = dateFormatter.stringFromDate(date!)

1 个答案:

答案 0 :(得分:3)

您已提供hh几个小时,但这需要1-12小时(至少2位数)的格式。由于您使用的是24小时格式(16:..),因此您需要使用说明符HH,例如:

dateFormatter.dateFormat = "dd/MM/yyyy HH:mm"

此外:

  • 避免使用显式展开选项(!),例如使用可选绑定(if let ...)代替,和
  • 考虑迁移到Swift 3:它现在是正式的。

E.g。 (斯威夫特3)

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm"

let timeToParse = "19/10/2016 16:10"

if let date = dateFormatter.date(from: timeToParse) {
    print(date) // 2016-10-19 16:10:00 +0000
}