我正在尝试从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是正确的。我哪里错了?
答案 0 :(得分:11)
如果您要设置dateFormat
,则不应设置timeStyle
或dateStyle
(它们将覆盖您设置的格式)。您可能还想考虑使用可选绑定而不是强制解包来使代码更安全一些:
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