сбой приложения в симуляторе не на устройстве для преобразования формата даты - PullRequest
0 голосов
/ 26 апреля 2019

При преобразовании «2019-04-25 15:31:22» в формат даты «МММ дд гггг, чч: мм», приложение вылетает в симуляторе, но отлично работает на устройстве.

Тема1: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

func convertToString (dateString: String, formatIn : String, formatOut : String) -> String {
    let dateFormater = DateFormatter()
    dateFormater.timeZone = (NSTimeZone(abbreviation: "IST")! as TimeZone)
    dateFormater.dateFormat = formatIn
    let date = dateFormater.date(from: dateString)
    dateFormater.timeZone = NSTimeZone.system
    dateFormater.dateFormat = formatOut
    let timeStr = dateFormater.string(from: date!)
    return timeStr
}

Печать описания timeStr:

выражение вызвало ошибку: ошибка: выполнение было прервано, причина: Фатальная ошибка: неожиданно обнаружен ноль при развертывании необязательного значения.Процесс был возвращен в состояние перед вычислением выражения.

Хотите понять, convertToString - это правильный код.

Один выходной ответ службы в формате "yyyy-MM-dd hh:mm:ss" и других службформат ответа: "yyyy-MM-dd'T'HH:mm:ss'Z'"

    let convertedFormat =  convertToString(dateString: lastTime, 
formatIn: "yyyy-MM-dd hh:mm:ss", formatOut: "MMM dd yyyy, hh:mm")

let convertedDate =  convertToString(dateString: headline.publishedAt!, formatIn: "yyyy-MM-dd'T'HH:mm:ss'Z'", formatOut: "MMMM dd yyyy, hh:mm")
cell.lbl_NewsDate?.text = convertedDate

Я хочу использовать функцию общего утилиты-конвертера для отображения результирующего времени в "МММ дд гггг, чч: мм" пример 26 апреля2019, 23: 32

Результирующее время необходимо показать на основе «Индийского стандартного времени».

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Попробуйте это

func convertToString(dateString: String, formatIn: String, formatOut: String) -> String {
    let dateFormater = DateFormatter()
    dateFormater.timeZone = TimeZone.current
    dateFormater.dateFormat = formatIn
    let date = dateFormater.date(from: dateString)
    dateFormater.timeZone = NSTimeZone.system
    dateFormater.dateFormat = formatOut
    let timeStr = dateFormater.string(from: date ?? Date())
    return timeStr
}

И проверьте данные в переменных: dateString, formatIn, formatOut они имеют правильные данные

0 голосов
/ 26 апреля 2019

Похоже, что вы используете неправильный формат даты "МММ дд гггг, чч: мм" в:

formatIn: String, formatOut: String

Часы - это "ЧЧ", но не "чч".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...