JS判断两个时间是否为同一周

环境准备:需要引入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时间来的晚,如果不做这个限制的话,其实也可以判断,随便拿个传入的时间计算出本周的起始时间和结束时间,另外一个参数时间跟起始结束时间做比较即可。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值