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}
js实现获取两个日期所在周范围,同时作为标记
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 课程笔记 在人生不同阶段,什么样的资产配资是最合适的?如果粗略的把人生分为青年,壮年,老年几个阶段 青年时期:最应...
- Zabbix 是一个用于监控 IT 设施的企业级解决方案,支持实时监控数千台服务器,虚拟机和网络设备,采集百万级监...