NSDateFormatter总是返回nil.

Cra*_*igH 4 swift swift-playground

我试图将日期时间字符串从Django Rest Framework转换为如此:"2014-10-28T18:14:32.457"到Swift字符串中.我在操场上运行以下代码并始终收到错误:

致命错误:在展开Optional值时意外发现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!)
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*e S 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")
}
Run Code Online (Sandbox Code Playgroud)

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

2014-10-28T18:14:32.457