не удалось преобразовать строку в дату - PullRequest
0 голосов
/ 29 марта 2019

У меня есть строка «24:00». Мне нужно конвертировать в дату. Я перепробовал все способы. Но всегда получал ноль.

вот мой код:

let timeformat = DateFormatter()
timeformat.dateFormat = "K:mm"
timeformat.locale = Locale(identifier: "en_US_POSIX")
guard let endtime = dateFormatter.date(from: selCloseTime!) else {
                fatalError("ERROR: Date conversion failed due to mismatched format.")
            }

ошибка: фатальная ошибка: ОШИБКА: сбой преобразования даты из-за несоответствия формат.

Я попытался изменить формат на:

HH:mm
H:mm
KK:mm (small & caps  -> k)
K:mm (small & caps - > k)

но всегда становится ноль. Моя строка может быть что-нибудь вроде:

"24.00", "01:00", "20:00" , "03:00"

Любая помощь в этом.

Заранее спасибо ~

Ответы [ 3 ]

0 голосов
/ 29 марта 2019

Вы можете попробовать это, но, пожалуйста, знайте, что у вас не будет текущей даты, поскольку вы только задали час / минуту, она не знает, какой год, месяц или день вы хотите.

let dateString = "20:32"
let df = DateFormatter()
df.dateFormat = "HH:mm"
let d = df.date(from: dateString) // "Jan 1, 2000 at 8:32 PM"
0 голосов
/ 29 марта 2019

Измените timeformat.dateFormat = "K:mm" на timeformat.dateFormat = "kk:mm" и посмотрите этот вывод.

let selCloseTime = "20:00"
let timeformat = DateFormatter()
timeformat.dateFormat = "kk:mm"
timeformat.locale = Locale(identifier: "en_US_POSIX")
guard let endtime = timeformat.date(from: selCloseTime) else {
    fatalError("ERROR: Date conversion failed due to mismatched format.")
}
print(endtime)

enter image description here

0 голосов
/ 29 марта 2019

Формат времени от 24 часов до 12 часов

let dateAsString = "13:15"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"

let date = dateFormatter.date(from: dateAsString)
dateFormatter.dateFormat = "h:mm a"
let Date12 = dateFormatter.string(from: date!)
print("12 hour formatted Date:",Date12) // 1:15 PM
...