我正在开发一个iOS应用程序,在其中我从日历中选择日期和时间,并提供在该日期和时间中添加事件的选项,如果他们想在特定时间(如每天/每周/每月/每年)重复该事件,还提供重复选项。我还要求日期,直到事件应该重复,以防止无限的问题!!. 当用户保存事件时,我会根据重复(0-从不,1-每天,2-每周,3-每月,4-每年)来传递标志,并用一个条目将所有内容保存到数据库中。
现在,当我从数据库中获取数据时,我正在检查该标志,并根据该标志填充事件。
我每天都这样重复:

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!)
                }

而且效果很好。现在,当我每周去,假设我选择的日期是2018年11月23日,但当我每周重复时,我必须知道在这个日期是哪一天。我也选择了2019年1月21日作为最后一天。所以现在我想重复这个每周事件直到最后一天,这意味着如果选定日期的日期时间是星期日,那么我需要所有星期日直到结束日期。
我怎样才能做到这一点,或者我应该在代码中设置什么条件来完成工作?
提前谢谢你!

最佳答案

如果您想通过添加天、月等从另一个日期获取日期,则不必担心闰年,因为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)!

关于ios - 获取两个日期之间的工作日/月的数字并增加日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53426783/

10-11 22:32
查看更多