由于最近项目需求,需要计算时间的柱壮图进度,通过开始时间,当前时间,完成时间来求取时间进度。
思路:通过获取开始时间天数,然后获取完成时间天数和当前时间天数(iOS时间是从1970年还是计数的) 与之相减,然后再计算进度比例进行显示。
那么需要获取开始时间与完成时间,当前时间与完成时间之间的时间间隔。主要是使用NSCalendar的dateComponents来实现的:
NSCalendar.current.dateComponents(Set<Calendar.Component>, from: Date, to: Date)
具体实现方法如下:
func dateInterval(startTime:String,endTime:String) -> Int{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/MM/dd"
guard let date1 = dateFormatter.date(from: startTime),
let date2 = dateFormatter.date(from: endTime) else {
return -1
}
let components = NSCalendar.current.dateComponents([.day], from: date1, to: date2)
//如果需要返回月份间隔,分钟间隔等等,只需要在dateComponents第一个参数后面加上相应的参数即可,示例如下:
// let components = NSCalendar.current.dateComponents([.month,.day,.hour,.minute], from: date1, to: date2)
return components.day!
}
由于日期格式使用的是yyyy/MM/dd 需要输入带/的日期String。如需yyyy-MM-dd格式需作相应修改。
注意:如果需要求分钟间隔dateFormat需要设置到分钟位。