NSDateFormatter总是返回nil。

时间:2014-10-29 20:37:23

标签: swift swift-playground

我正在尝试从Django Rest Framework转换日期时间字符串,例如: “2014-10-28T18:14:32.457”成Swift字符串。我在操场上运行以下代码并始终收到错误:

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

import Foundation

var mydate =  "2014-10-28T18:14:32.457"
let formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
formatter.timeStyle = .ShortStyle
formatter.dateStyle = .ShortStyle
var parsedDateTimeString = formatter.dateFromString(mydate)
formatter.stringFromDate(parsedDateTimeString!)

我认为是因为dateFromString总是返回nil。但是我无法弄清楚为什么它的回归为零。我很确定我的dateFormat是正确的。我哪里错了?

1 个答案:

答案 0 :(得分:11)

如果您要设置dateFormat,则不应设置timeStyledateStyle(它们将覆盖您设置的格式)。您可能还想考虑使用可选绑定而不是强制解包来使代码更安全一些:

var mydate = "2014-10-28T18:14:32.457"
let formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
if let parsedDateTimeString = formatter.dateFromString(mydate) {
    formatter.stringFromDate(parsedDateTimeString)
} else {
    println("Could not parse date")
}

在Playground中运行并查看stringFromDate行会导致:

  

2014-10-28T18:14:32.457