Получить числа будний / месяц между двумя датами и увеличить даты - PullRequest
0 голосов
/ 22 ноября 2018

Я разрабатываю приложение для iOS, в котором я выбираю дату и время из календаря и даю возможность добавить событие в эту дату и время, а также предоставляю опцию повтора, если они хотят повторить это событие в течение определенного времени, напримережедневно / еженедельно / ежемесячно / ежегодно.А также я прошу дату, пока событие не повторится, чтобы предотвратить бесконечную проблему !!Когда пользователь сохраняет событие, я передаю флаг в соответствии с повторениями, такими как (0: никогда, 1 раз в день, 2 раза в неделю, 3 месяца, 4 года) и сохраняю все в базу данных с одной записью.

1

Теперь, когда я получаю данные из базы данных, я проверяю этот флаг и в соответствии с этим я заполняю события.

Я делал ежедневные повторы, как это:

let calendar = NSCalendar.current
                let unitFlags = Set<Calendar.Component>([ .day])
                let dateComponents = calendar.dateComponents(unitFlags, from: date!, to: lastDate!)
                let dayCount = dateComponents.day
                print(dayCount!)

while date! < lastDate! {
                    date = Calendar.current.date(byAdding: .day, value: 1,  to: date!)!
                        print(date!)
                }

и работает нормально.теперь, когда я перехожу на еженедельник и предполагаю, что выбрал дату 23 ноября 2018 , но когда я повторяю ее еженедельно я должен узнать, какой день тамв эту дату.а также я выбрал дату 21 января 2019 как последняя дата .так что теперь я хочу повторить это еженедельное событие, пока эта последняя дата не будет означать, что если дневное время в выбранную дату составляет ВОСКРЕСЕНЬЕ , тогда мне нужно все воскресенья до конечной даты.

Как я могу получить это или какие условия я должен поставить в этом коде, чтобы выполнить работу?

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

1 Ответ

0 голосов
/ 22 ноября 2018

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

Добавлениенеделя

date = Calendar.current.date(byAdding: .day, value: 7,  to: date!)!

Добавление месяца

date = Calendar.current.date(byAdding: .month, value: 1,  to: date)!

Добавление года

date = Calendar.current.date(byAdding: .year, value: 1,  to: date)!
...