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 ответов

14 просмотров

юзай 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...

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

какой ответ?

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

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

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта