JavaScript 实现获取当前时间的周开始日期和周结束日期
实现原理
1.通过Date的getDay()方法获取当前日期所在周的某一天"weekDay"(返回值是 0(周日) 到 6(周六) 之间的一个整数)
2.通过获取的"weekDay"来判断距离每周的开始日期天数的差值,然后通过加减获取周开始日期和周结束日期
实现代码(周一为开始日期,周日为结束日期)
//获取日期周开始日期(周一为每周的开始,周日为每周的结束)
function beginOfWeek(dateValue) {
let date;
if (dateValue instanceof Date) {
date = dateValue;
} else {
date = new Date(dateValue);
}
let subDay = 0;
let weekDay = date.getDay();
if (weekDay == 0) {
//周天
subDay = 6;
} else {
subDay = weekDay - 1;
}
let beginDateTime = date.getTime() - (86400000 * subDay);
return new Date(beginDateTime);
}
//获取日期周结束日期(周一为每周的开始,周日为每周的结束)
function endOfWeek(dateValue) {
let date;
if (dateValue instanceof Date) {
date = dateValue;
} else {
date = new Date(dateValue);
}
let weekDay = date.getDay();
if (weekDay == 0) {
//周天
return date;
} else {
let addDay = 7 - weekDay;
let endDateTime = date.getTime() + (86400000 * addDay);
return new Date(endDateTime);
}
}
扩展
可以通过Date.prototype来扩展Date方法,然后通过new Date().beginOfWeek()
调用
实现代码
//周开始日期(周一为每周开始,周日为每周结束)
Date.prototype.beginOfWeek = function() {
let subDay = 0;
let weekDay = this.getDay();
if (weekDay == 0) {
//周天
subDay = 6;
} else {
subDay = weekDay - 1;
}
let beginDateTime = this.getTime() - (86400000 * subDay);
return new Date(beginDateTime);
}
//周结束日期(周一为每周开始,周日为每周结束)
Date.prototype.endOfWeek = function() {
let weekDay = this.getDay();
if (weekDay == 0) {
//周天
return this;
} else {
let addDay = 7 - weekDay;
let endDateTime = this.getTime() + (86400000 * addDay);
return new Date(endDateTime);
}
}