日期操作 日期范围查找周一周日 月初月末 按频率(天数、周,月)分割日期 vue或js
日期找周一及周日
getCurrentWeekDay(date) {
let dates = new Date(date);
var datesTime = dates.getTime();
var day = dates.getDay() || 7;
var MondayTime = datesTime - (day-1)*(24*60*60*1000) ;
var SundayTime = datesTime + (7-day)*(24*60*60*1000) ;
return {
MondayTime: this.fomatDate(MondayTime),
SundayTime: this.fomatDate(SundayTime)
};
},
日期找月初及月末
getCurrentMonthDay(date){
let dates = new Date(date);
let year = dates.getFullYear();
const month = dates.getMonth() + 1;
const startDate = new Date(year + '/' + month + '/' + 1);
let nextMonth = month + 1;
if (nextMonth === 13) {
year += 1;
nextMonth = 1;
};
const datesLong = (new Date(year + '/' + nextMonth + '/' + 1)).getTime() - 24 * 60 * 60 * 1000;
var res_startDate = this.fomatDate(startDate);
var res_endDate = this.fomatDate(datesLong);
return { res_startDate, res_endDate };
},
日期范围天数频率分割
plDate(startTime,endTime,pl){
console.log('##########⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇计算开始(按日期)⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇##########')
let start_time = Date.parse(new Date(startTime));
let end_time = Date.parse(new Date(endTime));
let dateCount = parseInt((end_time - start_time)/ (1000 * 60 * 60 * 24));
let forCount = Math.ceil((dateCount+1)/pl)-1;
console.log('开始:',startTime)
console.log('结束:',endTime)
console.log('天数(包含结束天):',dateCount+1)
console.log('频率(有效时间分割):',pl)
console.log('取余(循环次数):',forCount+1)
var arr = [];
var for_s_time = '';
var for_e_time = '';
for(var i=0; i<=forCount; i++){
var aa = i == 0 ? 0 : pl;
var bb = i == 0 ? pl-1 : pl;
var start_aa_time = i == 0 ? startTime : for_s_time;
var end_bb_time = i == 0 ? startTime : for_e_time;
var item = {
start_time: '',
end_time: '',
};
start_aa_time = Date.parse(new Date(start_aa_time))+((60 * 60 * 24 *aa) * 1000);
item.start_time = this.fomatDate(start_aa_time);
end_bb_time = Date.parse(new Date(end_bb_time))+((60 * 60 * 24 *bb) * 1000);
item.end_time = this.fomatDate(end_bb_time);
for_s_time = item.start_time;
for_e_time = item.end_time;
arr.push(item);
};
arr[arr.length-1].end_time = endTime;
console.log('按日期结果:',arr)
console.log('##########⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆计算结束(按日期)⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆##########')
return arr;
},
日期范围周频率分割
weekDate(startTime,endTime,pl){
console.log('##########⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇计算开始(按周)⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇##########')
let weekStartDates = this.getCurrentWeekDay(startTime);
var weekStartFirst = weekStartDates.MondayTime;
let weekEndDates = this.getCurrentWeekDay(endTime);
var weekEndLast = weekEndDates.SundayTime;
var arr = [];
arr = this.plDate(weekStartFirst,weekEndLast,pl);
arr[0].start_time = startTime;
arr[arr.length-1].end_time = endTime;
console.log('按周结果:',arr)
console.log('##########⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆计算结束(按周)⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆##########')
return arr;
},
日期范围月频率分割
monthDate(startTime,endTime,pl){
console.log('##########⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇计算开始(按周)⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇##########')
var date1 = startTime.split("-");
var date2 = endTime.split("-");
var year1 = parseInt(date1[0]),
month1 = parseInt(date1[1]),
year2 = parseInt(date2[0]),
month2 = parseInt(date2[1]),
months = (year2 - year1) * 12 + (month2 - month1) + 1;
let dateCount = months;
let forCount = months-1;
console.log('月差',months)
console.log('开始:',startTime)
console.log('结束:',endTime)
console.log('月数(包含结束月):',dateCount+1)
console.log('频率(有效时间分割):',pl)
console.log('取余(循环次数):',forCount+1)
var arr = [];
var for_s_time = '';
var for_e_time = '';
for(var i=0; i<=forCount; i++){
var aa = i == 0 ? 0 : pl;
var start_aa_time = i == 0 ? startTime : for_s_time;
var item = {
start_time: '',
end_time: '',
};
var strDate = new Date(start_aa_time);
var stryear = strDate.getFullYear();
var strmonth = strDate.getMonth() + 1 + aa;
var strday = strDate.getDate();
if(strmonth>12){
stryear+=1;
strmonth-=12;
};
let monthStartDates = this.getCurrentMonthDay(new Date(stryear+'-'+strmonth+'-'+strday));
item.start_time = monthStartDates.res_startDate;
item.end_time = monthStartDates.res_endDate;
for_s_time = item.start_time;
for_e_time = item.end_time;
arr.push(item);
};
arr[0].start_time = startTime;
arr[arr.length-1].end_time = endTime;
console.log('按周结果:',arr)
console.log('##########⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆计算结束(按周)⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆##########')
return arr;
},
公共函数日期格式化
fomatDate(date) {
let defVal = date ? new Date(date) : new Date();
let year = defVal.getFullYear();
let month = defVal.getMonth() + 1;
let day = defVal.getDate();
month = month<10?'0'+month:month;
day = day<10?'0'+day:day;
let defDate = year + '-' + month + '-' + day;
return defDate;
},