Добрый вечер! Вопрос школьного характера, но я в замешательстве.
Задание: есть массив времени его содержимое нужно сравнить с текущим временем, если время в массиве >= текущему времени то записываем , если меньше то пропускаем. когда массив будет пуст то выводим сообщение. Сделал, но похоже на ерунду
let timeArray = ["11:05", "13:20", "15:35", "17:50", "20:05", "22:25"]
var freeArray = [String]()
timeArray.forEach {(arr) in
if arr >= "23:25" {
freeArray.append(arr)
if freeArray.isEmpty == false {
print(freeArray)
}
}
}
if freeArray.isEmpty {
print("На сегодня записи нет!.")
}
haymob
Спасибо! за отклик , но мне не нужно дербанить время от минут. сравнивается текущее время со временем в массиве т.е 11:05 >= 10:05 записываем в UILabel , а если в массиве время меньше текущего как в моем примере то сообщаем print(“На сегодня записи нет!.”) Нужно вот так чтобы было
1 Когда текущее время меньше времени массива
Задача дополнить, чтобы когда текущее время будет больше Optional(“23:00”) Вывести сообщение "На сегодня записи нет! " Способом выше пытался это реализовать, но понимаю, что бредово)))
Еще один вариант, скажем так совсем в лоб
Исходя из того, что время, это увеличивающаяся величина, то строку можно смело конвертировать в Int, аналогично как с датой в формате yyyy-mm-dd.
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let currTime = Int("\(hour)\(minutes)")!
var freeArray = timeArray.filter { Int($0.replace(":", "")) >= currTime }
if freeArray.isEmpty {
print("На сегодня записи нет!.")
}
P.S. естественно это с учетом времени в формате 24h
func timeFilms(_ date: Date) -> Int {
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let min = calendar.component(.minute, from: date)
let time = (hour * 3600) + (min * 60)
return time
}
Вживил в свой код, для проверки, но не совсем то, что нужно
fileprivate func generalHallTime(_ hallId: Halls, _ responds: Schedule) {
responds.schedule.forEach { (timeHall) in
if self.anonceMenuFilms?.id == timeHall.filmId {
if timeHall.hallId == hallId.id {
let filmTime = formattedTimeSession(timeHall)
var timeArray = [String]()
timeArray.append(filmTime)
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let currTime = Int("\(hour)\(minutes)")!
let freeArray = timeArray.filter { Int($0.replacingOccurrences(of: ":", with: ""))! >= currTime }
if freeArray.count > 0 {
print(freeArray)
}
if freeArray.isEmpty {
print("На сегодня записи нет!.")
}
}
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}
}
}
результат
На сегодня записи нет!.
На сегодня записи нет!.
На сегодня записи нет!.
[“19:50”]
[“22:15”]
Эта запись На сегодня записи нет!. нужна только когда массив будет пуст. Когда текущее время будет больше 22:15 Тогда и выводим На сегодня записи нет!.