我们将这些函数挂载到Date身上
//周开始日期(周一为每周开始,周日为每周结束)
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);
let data = new Date(beginDateTime).getDate()
let month = new Date(beginDateTime).getMonth() + 1
let year = new Date(beginDateTime).getFullYear()
return year + '-' + (month < 10 ? '0' + month : month) + '-' + (data < 10 ? '0' + data : data);
}
//周结束日期(周一为每周开始,周日为每周结束)
Date.prototype.endOfWeek = function () {
let weekDay = this.getDay();
if (weekDay == 0) {
//周天
let data = this.getDate()
let month = this.getMonth() + 1
let year = this.getFullYear()
return year + '-' + (month < 10 ? '0' + month : month) + '-' + (data < 10 ? '0' + data : data);
} else {
let addDay = 7 - weekDay;
let endDateTime = this.getTime() + (86400000 * addDay);
let data = new Date(endDateTime).getDate()
let month = new Date(endDateTime).getMonth() + 1
let year = new Date(endDateTime).getFullYear()
return year + '-' + (month < 10 ? '0' + month : month) + '-' + (data < 10 ? '0' + data : data);
}
}
// 指定日期的一周的所有日期的数组
Date.prototype.getWeekTime = function () {
// var new_Date = new Date(2021,11,10) //获取指定日期当周的一周日期
var new_Date = this//获取本周一周日期
var timesStamp = new_Date.getTime();
var currenDay = new_Date.getDay();
var dates = [];
for (var i = 0; i < 7; i++) {
var das = new Date(timesStamp + 24 * 60 * 60 * 1000 * (i - (currenDay + 6) % 7)).toLocaleDateString();
das.replace(/[年月]/g, '.').replace(/[日上下午]/g, '');
dates.push(das);
}
return dates
}
使用:
new Date().getWeekTime()
new Date(2023,2,15).getWeekTime()
new Date(2023,2,15).beginOfWeek()
new Date(2023,2,15).endOfWeek()
结果: