我正在开发一个iOS应用,其中我要从日历中选择日期和时间,并提供在该日期和时间中添加事件的选项,并且如果他们想在特定时间段内重复该事件,还可以提供重复选项每天/每周/每月/每年。而且我还要求日期,直到事件应该重复以防止无限问题!!当用户保存事件时,我会根据重复(如0-Never,1-Daily,2-Weekly,3-Monthly,4-Yearly)传递标记,并通过一次输入将其保存到数据库中。
现在,当我从数据库中获取数据时,我正在检查该标志并根据其填充事件。
我每天都这样重复:
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 ,那么我需要所有星期日直到结束日期。
我该怎么办?或者应该在代码中加上哪些条件才能完成工作?
提前谢谢!
答案 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)!