【问题标题】:Swift ISO8601 format to Date returning fatal errorSwift ISO8601 格式到日期返回致命错误
【发布时间】:2019-06-17 00:34:57
【问题描述】:

我正在尝试返回 ISO8601 日期并将其附加到数组中,但是我一直遇到问题。出于某种原因,我不断收到致命错误,因为它在展开可选值时发现 nil 。但是我知道价值肯定在那里。我的格式不正确吗?

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)
        }

【问题讨论】:

标签: ios swift iso8601


【解决方案1】:

默认的 ISO8601 格式化程序不解析小数秒,因此当您尝试解析包含它们的日期字符串时,它返回 nil。如果你想要小数秒,你需要请求它们:

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)
}

【讨论】:

  • 嘿 Rob,这只是为我返回了完全相同的东西。 2019-06-21T00:00:00.000Z 如何进一步将其格式化为更具可读性的内容?
  • 它返回相同的内容,因为它使用相同的日期格式化程序进行格式化(这就是您在原始代码中所做的;我只是把它带来了)。如果你想要不同的格式,创建一个新的 DateFormatter 并按照你想要的方式配置它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
相关资源
最近更新 更多