JS 判断是否同一天、同一周

判断是否同一天

1
2
3
4
5
isSameDay(timeStampA, timeStampB) {
let dateA = new Date(timeStampA);
let dateB = new Date(timeStampB);
return (dateA.setHours(0, 0, 0, 0) == dateB.setHours(0, 0, 0, 0));
}

判断是否同一周

计算出 现在距离1970年1月1日的总天数,因为1970年1月1 是周4   所以(总天数+7)/7 取整 就是周数  如果相同就是同一周反之就不是。

1
2
3
4
5
6
7
8
isSameWeek(timeStampA, timeStampB) {
let A = new Date(timeStampA).setHours(0, 0, 0, 0);
let B = new Date(timeStampB).setHours(0, 0, 0, 0);
var oneDayTime = 1000 * 60 * 60 * 24;
var old_count = parseInt(A / oneDayTime);
var now_other = parseInt(B / oneDayTime);
return parseInt((old_count + 4) / 7) == parseInt((now_other + 4) / 7);
}

获取到目前的时间,然后转化到今天的凌晨的时间点的毫秒数,然后再去拉取今天星期几,再往前推对应的天数,找到当前天数所在的周一的凌晨点毫秒数,比对之前存储的数值,相同的话就是同一周,处理。不同的话就说明不是同一周,再覆盖存储周一的值,再处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
whetherSameWeek(myDate){
var myDate = new Date() ;
let nowWeek = myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
if(nowWeek == 0) nowWeek = 7;
nowWeek --;

let nowTime = myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
let hour = myDate.getHours(); //获取当前小时数(0-23)
let minute = myDate.getMinutes(); //获取当前分钟数(0-59)
let second = myDate.getSeconds(); //获取当前秒数(0-59)
let milSecond = myDate.getMilliseconds(); //获取当前毫秒数(0-999)
let mondayDate = cc.sys.localstorage.getltem("MondayDate"); //周一的时间 用来判断是否是新的一周

//获取目前天的凌晨毫秒数
let todayMidnight = nowTime - milSecond - second*1000 - minute*60*1000 - hour*60*60*1000;
//获取当前天所在周的周一凌晨毫秒数
let nowWeekMonday = todayMidnight - nowWeek*(24*60*60*1000);
if (nowWeekMonday == mondayDate){ //同一周
return true;
}
else{
//同步
cc.sys.localstorage.setltem("MondayDate",nowWeekMonday)
return false;
}
}

评论