js 时间范围校验

/**
 * 校验时间范围
 *
 * @export
 * @param {string} date
 * @param {string|number} type
 * @return {boolean}
 * 
 */
 export function isTimeRange(date,type='day'){
  let nowDate = new Date()
  let oldDate = new Date(date)
  let nowTimestamp = new Date(nowDate.toLocaleDateString()).getTime()
  let timestamp = new Date(oldDate.toLocaleDateString()).getTime()
  let oneDay = 60*60*24*1000
  if(typeof type === 'number' && type%1 === 0){
    //前几天内
    if(oldDate.getTime() > nowDate.getTime()){
      return false
    }
    return timestamp >= (nowTimestamp - type*oneDay)
  }else{
     switch(type){
      case 'second':
      case 'minute':
      case 'hour':
        //前几秒/几分/几时
        // 注释:返回值类型number,符合num、不符合0
        let minute = 1000*60
        let hour = minute*60
        let diffValue = (nowDate.getTime() - oldDate.getTime())
        let num = 0
        if(type=='second'){
          num = parseInt(diffValue/1000)
        }else if(type=='minute'){
          num = parseInt(diffValue/minute)
        }else{
          num = parseInt(diffValue/hour)
        }
        if(num >= 1) return num
        return 0
      case 'day':
        //是否当天
        return timestamp >= nowTimestamp && timestamp < (nowTimestamp + oneDay)
      case 'week':
        //是否本周
        let startWeek = nowTimestamp - (nowDate.getDay()-1)*oneDay
        let endWeek = nowTimestamp + (8-(nowDate.getDay()==0?7:nowDate.getDay()))*oneDay
        return timestamp >= startWeek && timestamp < endWeek
      case 'month':
        //是否本月
        let startMonth = nowTimestamp - (nowDate.getDate()-1)*oneDay
        let endMonth = new Date(nowDate.getFullYear(),nowDate.getMonth()+1,1).getTime()
        return timestamp >= startMonth && timestamp < endMonth
      case 'year':
        //是否本年
        let startYear = new Date(nowDate.getFullYear(),0).getTime()
        let endYear = new Date(nowDate.getFullYear()+1,0).getTime()
        return timestamp >= startYear && timestamp < endYear
      default:
        return false
     }
  }
  //注意:newDate('yyyy-MM-dd')不传时间 使用'-'默认初始时间为08:00:00,'/'默认初始时间为00:00:00
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值