class TimeRange {
constructor(begin, end, arr) {
this.begin = begin
this.end = end
this.arrTime = arr
var begintime = new Date(this.begin);
var endtime = new Date(this.end);
/* 获取日期对应的毫秒数 */
var beginnowTime = begintime.getTime() ;
/* 返回一个具体日期中一周的第几天,0 表示星期天 */
var beginday = begintime.getDay();
var enddayTime = endtime.getTime() ;
var endday = endtime.getDay();
/* 一天的时间 */
var oneDayTime = 24*60*60*1000 ;
this.MondayTime = this.gettime(beginnowTime - (beginday)*oneDayTime) ; //显示周一
this.SundayTime = this.gettime(enddayTime + (6-endday)*oneDayTime) ; //显示周日
}
gettime(timerange) {
let date = new Date(timerange)
let Y = date.getFullYear() + '-';
let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
let D = date.getDate() + ' ';
return `${Y}${M}${D}`
}
format(timeparam) {
var s = '';
var mouth = (timeparam.getMonth() + 1) >= 10 ? (timeparam.getMonth() + 1) : ('0' + (timeparam.getMonth() + 1));
var day = timeparam.getDate() >= 10 ? timeparam.getDate() : ('0' + timeparam.getDate());
s += timeparam.getFullYear() + '-'; // 获取年份。
s += mouth + "-"; // 获取月份。
s += day; // 获取日。
return (s); // 返回日期。
}
/* 获取当前数据所在周日到周六的范围
* beginflag 0无信息 1开始标志
* endflag 0无信息 1结束标志
* flag 0无信息 1可以选择
* */
getAll() {
let ab = this.MondayTime.split("-")
let ae = this.SundayTime.split("-")
let db = new Date();
db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
let de = new Date();
de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
let unixDb = db.getTime()
let unixDe = de.getTime()
let timeArr = []
for (let k = unixDb; k <= unixDe;) {
let formatTime = this.format(new Date(parseInt(k)))
let option = {
time: formatTime,
flag: 0,
beginflag: 0,
endflag: 0
}
let indexflag = this.arrTime.find((itemarr) =>{
return itemarr === formatTime
})
if(indexflag) {
option.flag = 1
}
timeArr.push(option)
/* 一天的时间 */
k = k + 24 * 60 * 60 * 1000;
}
return timeArr
}
/* 获取当前组的信息 */
getgroup() {
/* 分组数组 */
let timegroupTmp = []
/* 具有开始结束标志的数组 */
let timerangeTmp = []
let timrArr = this.getAll()
this.getAll().forEach((item, index) => {
let option = item
if(item.flag === 1) {
if(index === 0) {
option.beginflag = 1
if (timrArr[index+1].flag === 1) {
option.endflag = 0
}else {
option.endflag = 1
}
} else if( index === timrArr.length-1) {
option.endflag = 1
if (timrArr[index-1].flag === 1) {
option.beginflag = 0
} else {
option.beginflag = 1
}
} else {
if(timrArr[index-1].flag === 1 && timrArr[index+1].flag === 1) {
} else if(timrArr[index-1].flag === 1 && timrArr[index+1].flag === 0) {
option.endflag = 1
} else if(timrArr[index-1].flag === 0 && timrArr[index+1].flag === 1) {
option.beginflag = 1
} else if(timrArr[index-1].flag === 0 && timrArr[index+1].flag === 0) {
option.beginflag = 1
option.endflag = 1
}
}
}
timegroupTmp.push(option)
})
return timegroupTmp
}
}
/*let time = ['2019-12-22', '2019-12-28', '2020-01-03', '2020-01-04']
let timeRange = new TimeRange('2019-12-28', '2020-1-4', time)
let data = timeRange.getAll()
let data2 = timeRange.getgroup()*/
/*
console.log(data2)*/
export {TimeRange}
网友评论