Swift формат ISO8601 до даты, возвращающей фатальную ошибку - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь вернуть дату ISO8601 и добавить ее в массив, однако продолжаю сталкиваться с проблемами.По какой-то причине я продолжаю получать фатальную ошибку, поскольку он находит ноль, разворачивая необязательное значение.Однако я знаю, что ценность определенно там.Я что-то форматирую неправильно?

time_released format -> "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)
        }

1 Ответ

3 голосов
/ 17 июня 2019

Форматер ISO8601 по умолчанию не разбирает доли секунды, поэтому он возвращает ноль, когда вы пытаетесь проанализировать строку даты, которая включает их. Если вам нужны доли секунды, вам нужно запросить их:

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