需求:
在开发中经常会遇到,计算后三个月,一年后,20天后的日期等需求。如:计算距离当前日期,3个月后的日期。
/// 获取距离当前日期,几年几月几日的日期
///
/// - Parameters:
/// - year: 距离当前日期的前/后几年 如:去年:-1 明年:1 今年:0
/// - month: 距离当前日期的前/后几个月 如:上个月:-1 下个月:1 这个月:0
/// - day: 距离当前日期的前/后几天 如:昨天:-1 明天:1 今天:0
/// - Returns: 返回所要的日期
func JJCurrentDateToWantDate(year:Int,month:Int,day:Int)->Date {
let current = Date()
let calendar = Calendar(identifier: .gregorian)
var comps:DateComponents?
comps = calendar.dateComponents([.year,.month,.day], from: current)
comps?.year = year
comps?.month = month
comps?.day = day
return calendar.date(byAdding: comps!, to: current) ?? Date()
}
使用:
let resultDate = JJCurrentDateToWantDate(year:0,month:3,day:0)
// 当前日期为2019年7月2日,resultDate的结果为2019年10月2日
注:
使用时,想要获取
1)当前日期之前的某几年、某几个月、多少天,需要传的参数都为负数,如-1;
2)当日期之后的某几年、某几个月、多少天,需要传的参数都为正数,如1;
3)当前年份、月份,需要传的参数都为0即可。