vuejs实现已知开始时间和结束时间 计算出中间的所有日期
1、已知开始时间和结束时间 计算出中间的所有日期
(要求:①开始时间和结束时间的时间差在一天内返回的值为间隔1个小时的日期(时间入参格式为yyyy-MM-dd-HH);
②开始时间和结束时间的时间差在7天内返回的值为间隔1天的日期(时间入参格式为yyyy-MM-dd);
③开始时间和结束时间的时间差大于7天返回的值为间隔7天的日期(时间入参格式为yyyy-MM-dd)。
)
getAllDate(start, end , type){
let format = (time) => {
let ymd = ''
let mouth = (time.getMonth() + 1)
let day = time.getDate() >= 10 ? time.getDate() : ('0' + time.getDate());
let hour = time.getHours() >= 10 ? time.getHours() : ('0' + time.getHours())
ymd += time.getFullYear() + '-' // 获取年份。
ymd += mouth + '-' // 获取月份。
ymd += day // 获取日。
if(type === 1){
ymd += ' ' + hour + ':00' // 获取小时。
}
//m.df格式
return ymd // 返回日期。
}
let dateArr = []
let startArr = start.split('-')
let endArr = end.split('-')
let db = new Date()
db.setUTCFullYear(startArr[0], startArr[1] - 1, startArr[2])
if(type === 1){
db.setHours(startArr[3])
}else{
db.setHours(0,0,0,0)
}
let de = new Date()
de.setUTCFullYear(endArr[0], endArr[1] - 1, endArr[2])
if(type === 1){
de.setHours(Number(endArr[3]) + 1)
}else{
de.setHours(0,0,0,0)
}
let unixDb = db.getTime()
let unixDe = de.getTime()
let stamp
let oneDay = null;
if(type === 1){
oneDay = 60 * 60 * 1000;
}else if(type === 2){
oneDay = 24 * 60 * 60 * 1000;
}else if(type === 3){
oneDay = 24 * 60 * 60 * 1000 * 7;
}
for (stamp = unixDb; stamp <= unixDe;) {
dateArr.push(format(new Date(parseInt(stamp))))
stamp = stamp + oneDay
}
return dateArr
},