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

时间:2018-11-22 08:35:41

标签: ios swift date nsdate

我正在开发一个iOS应用,其中我要从日历中选择日期和时间,并提供在该日期和时间中添加事件的选项,并且如果他们想在特定时间段内重复该事件,还可以提供重复选项每天/每周/每月/每年。而且我还要求日期,直到事件应该重复以防止无限问题!!当用户保存事件时,我会根据重复(如0-Never,1-Daily,2-Weekly,3-Monthly,4-Yearly)传递标记,并通过一次输入将其保存到数据库中。

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

,它工作正常。现在,当我每周去一次并假设我选择的日期是 2018年11月23日时,但是当我重复 每周 时,我必须知道这个日期有一天。并且我已经选择日期 2019年1月21日作为 最后日期 。因此,现在我要重复此每周活动,直到最后一个日期为止,这意味着如果所选日期的日期时间是 SUNDAY ,那么我需要所有星期日直到结束日期。

我该怎么办?或者应该在代码中加上哪些条件才能完成工作?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果您想通过添加天数,月份等来获取另一个日期的日期,则不必担心leap年,因为Calendar是leap年。

添加一周

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