185 похожих чатов

Ребята привет! Не могу найти решение для своей проблемы. Сейчас

я делаю приложение позволяющее делать записи на доступные даты. У меня есть array с днями недели, на которые можно записаться:

var masterSchedule = [WorkDay(weekDay: 1, startTime: 8, endTime: 16, busyHours: []), WorkDay(weekDay: 4, startTime: 8, endTime: 16, busyHours: [])]

Дни недели обозначены цифрой в значении weekDay.

Мне нужна функция которая смогла бы генерировать Date объекты по выбранным дням недели на месяц вперед.

Другими словами, если человек выбирает что он был бы готов принимать по понедельникам и вторникам, то функция должна вернуть понедельники и вторники на 4 недели вперед.

Код которым я попробовал решить проблему:

func getDates() {
for workDay in masterSchedule {
var components = DateComponents()

components.weekday = workDay.weekDay
components.year = 2021
components.month = 8


let date = Calendar.current.date(from: components) ?? Date()
availableDays.append(date)

}
}

Однако, он не работает и возвращает мне 2 одинаковых Date объекта: 2021-07-31 23:00:00 +0000

Буду очень рад любой помощи!
Спасибо!

5 ответов

17 просмотров

юзай date by adding timeInterval для конкретного дня то есть отправляешь день недели и текущую дату и тебе функция должна определить ближайшую дату начиная от текущей с этим днем недели ( что будет точкой отсчета ) и дальше просто цикл на 4 итерации прибавляя по 7 дней

ᅠ ᅠ- Автор вопроса
Василий
юзай date by adding timeInterval для конкретного д...

Привет! Спавсибо за ответ, я уже вроде как разобрался с этой проблемой, сделал так: ```func getDates() { for week in 0...3 { for day in masterSchedule { var components = DateComponents() components.weekday = day.weekDay let today = Date().addingTimeInterval(-86400) let calendar = Calendar.current availableDays.append(calendar.nextDate(after: today.addingTimeInterval(TimeInterval(604800*week)), matching: components, matchingPolicy: .nextTime)!) } } }```

let curretDate = Date() let nextWeek = Calendar.current.date(byAdding: .day, value: 7, to: curretDate) В две строчки. От любой даты добавляешь 7 дней и получаешь новую дату

ᅠ ᅠ- Автор вопроса
Александр () 🆎
let curretDate = Date() let nextWeek = Calendar.cu...

да, спасибо, я примерно так и решил

какой ответ?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта