Ios 获取两个日期和增加日期之间的工作日/月数

Ios 获取两个日期和增加日期之间的工作日/月数,ios,swift,date,nsdate,Ios,Swift,Date,Nsdate,我正在开发一个iOS应用程序,其中我从日历中选择日期和时间,并提供在该日期和时间中添加事件的选项,如果他们想在特定时间段(如每日/每周/每月/每年)重复该事件,还提供重复选项。同时,我还要求在事件再次发生之前确定日期,以防止出现无限大的问题!!。当用户保存事件时,我将根据重复(0-从不、1-每日、2-每周、3-每月、4-年度)传递标志,并使用单个条目将所有内容保存到数据库中 现在,当我从数据库中获取数据时,我检查该标志,并根据该标志填充事件 我每天都这样重复: let calendar = N

我正在开发一个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!)
                }
let calendar=NSCalendar.current
让unitFlags=Set([.day])
让dateComponents=calendar.dateComponents(unitFlags,from:date!,to:lastDate!)
let dayCount=dateComponents.day
打印(日计数!)
而日期最后日期!{
日期=日历。当前。日期(通过添加:。天,值:1,到:日期!)!
打印(日期!)
}
它工作得很好。现在,当我选择《每周》时,假设我选择的日期是2018年11月23日,但当我重复《每周》时,我必须知道这一天是哪一天。我还选择了2019年1月21日作为最后日期。所以现在我想重复这个每周事件,直到最后一个日期,这意味着如果所选日期的白天时间是周日,那么我需要所有周日,直到结束日期

我怎样才能得到它,或者我应该在代码中加入什么条件来完成工作


提前谢谢你

如果您想通过添加天数、月份等从另一个日期获取日期,您不必担心闰年,因为
日历
以闰年计算

增加一周

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

为了帮助人们帮助你编辑你的问题:“以及我是如何通过增加7天来完成这项工作的…”-显示你的代码;“但根据闰年的规定,如果2月之间是28/29天,则会出现问题”-显示/解释这些“问题”。@CRD感谢您的快速回复,我正在更新问题!!感谢您的回复,这是有效的。我还有一个问题和这个问题有关@德赛先生,还有一个问题吗?我怎样才能在每月和每年都做到同样的事情呢?在这个月它有问题。。我选择的日期是29日,直到1月它工作正常,但从2月起它会自动从29日更改为27日,并从开始保存27th@Mr.Desai是的。更好的方法是每月重复,如果你只是增加例如30天