Получение сбоя в форматировании даты и времени - PullRequest
0 голосов
/ 18 сентября 2018

В моем коде dateFormatter.date используется несколько раз в цикле (более 100), и я иногда получаю сбой, даже если введенная дата имеет правильный формат. Получение даты ноль (иногда).

Функция getDayFromDate () работает в цикле и передает в качестве параметра другую дату, полученную от веб-службы (например, 2018-06-17T00: 00: 00). всегда проходит время как 00:00:00. inputDateString проверяется и всегда в правильном формате.

    extension Formatter {
    static let enUSPOSIX: DateFormatter = {
        let formatter = DateFormatter()
        formatter.locale = Locale(identifier: "en_US_POSIX")//For 11.3.1 version change
        return formatter
    }()
}

func getDayFromDate(inputDateString: String) -> Int{
    let dateFormatter = Formatter.enUSPOSIX

    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
    let date = dateFormatter.date(from: inputDateString )    //  e.g. 2018-06-17T00:00:00
    dateFormatter.timeZone = TimeZone(identifier: "UTC")
    let calendar = Calendar.current
    let dayComponent = calendar.component(.day, from: date!)
    return dayComponent

}

Я заметил, что когда в iPhone работает слишком много фоновых приложений, происходит только сбой.

1 Ответ

0 голосов
/ 18 сентября 2018

Не используйте принудительную распаковку при написании кода.Если ваша переменная удерживает значение nil, это приведет к сбою

, измените код

let dayComponent = calendar.component(.day, from: date!)

на

if let convertedDate = date {
  let dayComponent = calendar.component(.day, from: convertedDate)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...