JS获取本周、上周、本月、上月时间段

哈喽,最近公司都在赶项目在做的过程中产品提了一个需要查看本周、上周、上个月的需求,现在来记录下代码能直接使用。最后的效果如下图(主要涉及Date()对象的使用):在这里插入图片描述

主要思路(获取周时间段)

/***

  • 核心思路:先得到startDateTime(开始时间),随后+6就能得出endDateTime(结束时间)
  • 开始时间的计算方式:通过getDay()先获取要计算时间是属于星期几(可能出现:0~6),再通过getDate()获取要计算时间是属于本月中那一天
  • 结果会出现两种情况:
  • 1、利用本月的天数-归属星期几 = 上周的最后一天。那么通过+1天就能得出计算时间的周一时间
  • 2、如果正好时间是周六那么将出现另外一个情况:利用本月的天数-归属星期几 - 6天 =计算时间的周一时间 (如果getDay()获取的时间不是0 ~ 6,而是1~7那么就不会出现这个情况,可是没有这个如果!!!)
    */

获取上周时间段

function getLastWeek(value){
    if(value==''|| value==undefined){
        return value
    }
    if(value.length==10){
        value = value *1000
    }


    let myDate = new Date(value - 7 * 24 * 3600 * 1000)
    let day = myDate.getDay()    // 回退7天后是星期几?

    let time = myDate.getDate() - day + (day === 0 ? -6 : 1)    
    let startTime = new Date(myDate.setDate(time))
    startDateTime =
      startTime.getFullYear() +
      '-' +
      (startTime.getMonth() + 1) +
      '-' +
      startTime.getDate()
    let endTime = new Date(myDate.setDate(time + 6))
    endDateTime =
      endTime.getFullYear() +
      '-' +
      (endTime.getMonth() + 1) +
      '-' +
      endTime.getDate()
    return {
        startDateTime:startDateTime,
        endDateTime:endDateTime
    }
}

获取本周时间段

function getCurrentWeek(value){
    if(value==''|| value==undefined){
        return value
    }
    if(value.length==10){
        value = value *1000
    }

    let myDate = new Date(value)
    let day = myDate.getDay()    // 回退7天后是星期几?

    let time = myDate.getDate() - day + (day === 0 ? -6 : 1)    
    let startTime = new Date(myDate.setDate(time))
    startDateTime =
      startTime.getFullYear() +
      '-' +
      (startTime.getMonth() + 1) +
      '-' +
      startTime.getDate()
    let endTime = new Date(myDate.setDate(time + 6))
    endDateTime =
      endTime.getFullYear() +
      '-' +
      (endTime.getMonth() + 1) +
      '-' +
      endTime.getDate()
    return {
        startDateTime:startDateTime,
        endDateTime:endDateTime
    }
}

获取上个月时间段

function getLastMonth(value){
    if(value==''|| value==undefined){
        return value
    }
    if(value.length==10){
        value = value *1000
    }
    // 获取上个月时间
    let nowdays = new Date(value)
    let year = nowdays.getFullYear()
    let month = nowdays.getMonth()
    if (month === 0) {
        month = 12
        year = year - 1
    }
    if (month < 10) {
        month = '0' + month
    }

    let yDate = new Date(year, month, 0)

    startDateTime = year + '-' + month + '-01 00:00:00' //上个月第一天
    endDateTime = year + '-' + month + '-' + yDate.getDate() + ' 23:59:59' //上个月最后一天

    return {
        startDateTime:startDateTime,
        endDateTime:endDateTime
    }
}

获取本月时间段

function getCurrentMonth(value){
    if(value==''|| value==undefined){
        return value
    }
    if(value.length==10){
        value = value *1000
    }
    let nowdays = new Date(value)
    let year = nowdays.getFullYear()
    let month = nowdays.getMonth()+1
  
    if (month < 10) {
        month = '0' + month
    }

    let yDate = new Date(year, month, 0)

    startDateTime = year + '-' + month + '-01 00:00:00' //上个月第一天
    endDateTime = year + '-' + month + '-' + yDate.getDate() + ' 23:59:59' //上个月最后一天

    return {
        startDateTime:startDateTime,
        endDateTime:endDateTime
    }
}

以上就是我对JS Date()获取时间的理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的文章,以避免误人子弟

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值