通过Calendar实现日期加减。
主要是通过DateComponents组件设置要加减的年月日
下面举几个例子
- 获取上一天
extension Date {
func kk_lastDay() -> Date? {
//.gregorian代表公历
let calendar = Calendar(identifier: .gregorian)
var components = calendar.dateComponents([.year, .month, .day], from: self)
/*
* value是int型,component对应dateComponents(上一行代码)设置,
* 设置了year,month,day中的哪个就设置哪个
* value负数代表向前推几年,几月,几天,正数代表向后推几年,几月,几天。按需设置
*/
components.setValue(0, for: .year)
components.setValue(0, for: .month)
components.setValue(-1, for: .day)
let lastDay = calendar.date(byAdding: components, to: self)
return lastDay
}
}
- 获取下一个月(Components也可以只设置其中一个,按需求来)
func kk_nextMonth() -> Date? {
//.gregorian代表公历
let calendar = Calendar(identifier: .gregorian)
var components = calendar.dateComponents([.month], from: self)
/*
* components只用了.month来生成,所以只设置month的值就好了
* 这里是获取下一个月,所以.month的value = 1,如果是上两个个月value = -2
*/
components.setValue(1, for: .month)
let nextMonth = calendar.date(byAdding: components, to: self)
return nextMonth
}