简体   繁体   English

Swift ISO8601格式到Date返回致命错误

[英]Swift ISO8601 format to Date returning fatal error

I am trying to return an ISO8601 date and append it onto an array however I keep running into problems. 我试图返回一个ISO8601日期并将其附加到一个数组但是我一直遇到问题。 For some reason I keep getting a fatal error as it finds nil while unwrapping an optional value. 出于某种原因,我在解开可选值时发现了nil,因为它发现了nil。 However I know the value is definitely in there. 但是我知道价值肯定在那里。 Am I formatting something incorrectly? 我格式化错误了吗?

time_released format -> "2006-11-30T00:00:00.000Z" time_released格式 - >“2006-11-30T00:00:00.000Z”

if movieInfo.time_released != nil {

            let dateFormatter = ISO8601DateFormatter()
            let date = dateFormatter.date(from: movieInfo.time_released!)
            let dateString = dateFormatter.string(from: date!)

            array.append(dateString)
        }

The default ISO8601 formatter does not parse fractional seconds, so this returns nil when you try to parse the date string that includes them. 默认的ISO8601格式化程序不解析小数秒,因此当您尝试解析包含它们的日期字符串时,这将返回nil。 If you want fractional seconds, you need to request them: 如果你想要小数秒,你需要请求它们:

import Foundation

let time_released = "2006-11-30T00:00:00.000Z"

let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions.insert(.withFractionalSeconds)
if let date = dateFormatter.date(from: time_released) {
    let dateString = dateFormatter.string(from: date)
    print(dateString)
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM