环境准备:需要引入dayjs,如何引用请另外搜索,只说实现思路。
定义:周一~周日算为一周。注意函数中周日返回的值是0,也就是周日~周六,所以我们需要另外判断处理。
前提:两个时间,一个为timeBefore,一个为timeAfter,timeBefore<=timeAfter。
大致思路:利用timeAfter计算出本周的起始时间weekStart,只要timeBefore大于weekStart,即说明两个时间在同一周。
具体代码:
//是否为同一周,传入的日期不能超过今天,否则逻辑不成立
function isSameWeek(timeBefore, timeAfter) {
dayInWeek = timeAfter.day()
//如果是周日,就改成7
if (dayInWeek == 0) {
dayInWeek = 7
}
//计算今天的凌晨时间
todayZeroTime = new Date(timeAfter.year(), timeAfter.month(), timeAfter.date())
//本周开始的时间=今天凌晨时间-今天是周几-1,这里需要-1是因为凌晨已经刨去一天
weekStart = dayjs(todayZeroTime).subtract(dayInWeek - 1, 'day')
//只要比这周的起始时间晚,就说明是本周内
return timeBefore.isAfter(weekStart)
}
这里注意timeAfter需要比timeBefore时间来的晚,如果不做这个限制的话,其实也可以判断,随便拿个传入的时间计算出本周的起始时间和结束时间,另外一个参数时间跟起始结束时间做比较即可。