我正在开发一个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/