ios - dateFromString 给出 nil,swift

标签 ios swift exception nsdate

我正在尝试从一个字符串创建一个 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!)

最佳答案

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

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

还有:

  • 避免显式展开可选值 (!),例如使用可选绑定(bind) (if let ...) 而不是,和
  • 考虑迁移到 Swift 3:它现已正式发布。

例如( swift 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
}

关于ios - dateFromString 给出 nil,swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134051/

相关文章:

ios - GameScene SpriteKit 不适合 iPhone X 显示

ios - KVO 不工作 : message was received but not handled

exception - 不可捕获的异常(PowerShell)

ios - 单击注释上的右侧详细信息披露按钮时,MonoTouch 会抛出 SIGSEGV

javascript - 创建 Parse.Object 新解析服务器

ios - 为呈现的 ViewController 设置约束

ios - 动画 inputAccessoryView Swift 的高度

c++ - 对 std::runtime_error 与 std::logic_error 感到困惑

python - 当递归函数中出现错误时,如何避免长堆栈跟踪?

javascript - 当我尝试在 native webview 中加载 https 网页时,它显示空白页面