此算法思路把两个日期均转换到周一,比较转换后的两日期是否相同。
算法中完整周的定义是:周一到周日,即周一为第一天
首先是转换方法,转换日期到周一,因为JS规定周日为完整周的第一天,所以需单独判断week=0:
function tmonday(dtm){
let dte = new Date(dtm);
let day = dte.getDay();
let dty = dte.getDate();
if(day===0){
day=7;
}
dte.setDate(dty-day+1);
return dte.getFullYear()+'-'+dte.getMonth()+'-'+dte.getDate();
}
下边是实际使用调用方法,方法需要传入日期的毫秒值:
function iSameWeek(date1,date2){
let dt1 = new Date();
dt1.setTime(date1);
let dt2 = new Date();
dt2.setTime(date2);
let md1 = tmonday(dt1);
let md2 = tmonday(dt2);
return md1===md2;
}
调用示例:
new Date(2020,9,6,0,0,0,0).getTime()=1601913600000;//2020年10月6日
new Date(2020,8,29,0,0,0,0).getTime()=1601308800000;2020年9月29日
iSameWeek(1601913600000,1601308800000)
=false