#ios #swift #iphone #nsdate #xcode10.1
#iOS #swift #iPhone #nsdate #xcode10.1
Вопрос:
У меня есть строка, скажем, «24:00». Мне нужно преобразовать в дату.Я перепробовал все способы.Но всегда получается nil.
вот мой код :
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 amp; caps -> k)
K:mm (small amp; caps - > k)
но всегда получается nil. Моя строка может быть чем угодно, например :
"24.00", "01:00", "20:00" , "03:00"
Любая помощь по этому поводу.
Заранее спасибо ~
Комментарии:
1. попробуйте timeformat.date (из: selCloseTime!) ?
2. @KingofBliss тот же ноль, только я получаю
3. Две разные переменные
timeformat
иdateFormatter
какую из них вы используете для форматирования объекта date?4. @macrodues чтобы найти фактическую дату, вам нужно передать время с указанием даты, месяца и года, используя эти данные, вы только конвертируете их в формат времени.
Ответ №1:
Измените 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)
Ответ №2:
Вы можете попробовать это, но, пожалуйста, знайте, что у вас не будет сегодняшней даты, поскольку вы установили только час / минуту, он не знает, какой год, месяц или день вы хотите.
let dateString = "20:32"
let df = DateFormatter()
df.dateFormat = "HH:mm"
let d = df.date(from: dateString) // "Jan 1, 2000 at 8:32 PM"
Комментарии:
1. это возвращает 2000-01-01 15:02:00 0000 неправильное время
Ответ №3:
Формат времени от 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