Почему мой DateFormatter .date (from: String) возвращает ноль - PullRequest
0 голосов
/ 05 октября 2018

Я использовал эту функцию, чтобы преобразовать строку в объект даты.
Подобный Q для SO, однако не смог найти тот, который обрабатывает мой случай только времени.Так что этот пост, я считаю, не является дубликатом.

    func convertTimeStringToDate() -> Date {
                //time will be "04:48"
                let dateFormatter = DateFormatter()
                dateFormatter.dateFormat = "HH:mm"
                dateFormatter.dateStyle = .none
                dateFormatter.timeStyle = .short
                dateFormatter.locale = Locale.current
                return dateFormatter.date(from: "04:48")!
            }

Функция возвращает nil, поэтому происходит сбой при ее развертывании !.Я не вижу, что не так с кодом.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Пожалуйста, не устанавливайте dateStyle & timeStyle.

func convertTimeStringToDate() -> Date {
    //time will be "04:48"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "HH:mm"
    dateFormatter.locale = Locale.current
    return dateFormatter.date(from: "04:48")!
}
0 голосов
/ 05 октября 2018

Вот как должен быть ваш метод.dateStyle и timeStyle снова измените формат.

func convertTimeStringToDate() -> Date {
    //time will be "04:48"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "HH:mm"
    dateFormatter.locale = Locale.current
    return dateFormatter.date(from: "04:48")!
}

Тем не менее, интересно отметить, что последний формат даты считается действительным.Итак, если вы установите форматы в обратном порядке, это будет работать!

PS - я видел только dateStyle и timeStyle, используемые для форматирования вывода.


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

...