• js获取上周、本周、上月、本月、第一天和最后一天


    获取上周、本周的周一、周日

    思路:先获取到本周一的时间
    本周日:就是本周一的时间加6天的时间
    上周一:就是本周一的时间减7天的时间
    上周日:就是本周一的时间减1天的时间
    注意:上面的思路不变,js里newDate.getDay()获取到日期所在的星期的第几天 0.1.2.3.4.5.6 【0 = 上周周日】
    周一至周六newDate.getDay()获取到的为相应的1-6.但是周日获取到的天数为0。这是西方的计算方式,他们每周的周日为每周的第一天,这样我们用newDate.getDay()获取到的本周的0.1.2.3.4.5.6,其实0不是本周日期,为上周的周日。这里我们按照我们的习惯,周一为每周的第一天(下方代码里有相应的处理)

    /**
     * 得到本周一、本周日、上周一、上周日的时间
     * 
     * return
     * {
     *   "thisWeekMonday": "2022-09-12",
     *   "thisWeekSunday": "2022-09-18",
     *   "lastWeekMonday": "2022-09-05",
     *   "lastWeekSunday": "2022-09-11"
     * }
     */
    export function getMondayAndSunday() {
      var today = new Date();
    
      //构建当前日期,格式:2022-08-22 00:00:00
      var year = today.getFullYear(); //本年 
      var month = today.getMonth() + 1; //本月
      var day = today.getDate(); //本日
      var newDate = new Date(year + "-" + month + "-" + day + " 00:00:00"); //年月日拼接
    
      var nowTime = newDate.getTime(); //当前的时间戳
      var weekDay = newDate.getDay(); //当前星期 0.1.2.3.4.5.6 【0 = 周日】
    
      var oneDayTime = 24 * 60 * 60 * 1000; //一天的总ms
    
      // 当前星期减去天数,如今天为周五,则本周一为周五的时间戳减去4天的时间戳。但周日特殊,周一至周六是周几的到的weekDay就是几,但是周日的到的为0,需特殊处理
      var thisWeekMondayTime = (1 - weekDay) * oneDayTime + nowTime; //本周一的时间戳
      if (weekDay == 0) {
        // weekDay = 0 为周日,此时本周一时间为周日减去6天的时间
        thisWeekMondayTime = nowTime - 6 * oneDayTime
      }
    
      var thisWeekSundayTime = thisWeekMondayTime + 6 * 24 * 60 * 60 * 1000 // 本周日
    
      var lastWeekMondayTime = thisWeekMondayTime - 7 * oneDayTime // 上周一
      var lastWeekSundayTime = thisWeekMondayTime - oneDayTime // 上周日
    
      var res = {
        thisWeekMonday: dateToYYYYMMDD(thisWeekMondayTime),
        thisWeekSunday: dateToYYYYMMDD(thisWeekSundayTime),
        lastWeekMonday: dateToYYYYMMDD(lastWeekMondayTime),
        lastWeekSunday: dateToYYYYMMDD(lastWeekSundayTime),
      }
      return res;
    }
    
    • 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
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    获取上月、本月的第一天和最后一天

    /**
     * 得到本月第一天、本月最后一天、上月第一天、上月最后一天日期
     * return
     *  {
     *	  "thisMonthFirstDay": "2022-09-01",
     *	  "thisMonthLastDay": "2022-09-30",
     *	  "lastMonthFirstDay": "2022-08-01",
     *	  "lastMonthLastDay": "2022-08-31"
     *  }
     */
    export function getMonthFirstDayAndLastDay() {
      var date = new Date()
      // 值得注意的是,如果day取值为0,意味着取的是date时间的上一个月的最后一天,简单理解:date当前月的第一天,再减去一天
      var thisMonthFirstDay = date.setDate(1) // 本月第一天
      var thisMonthLastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0) // 本月最后一天
    
      var lastMonthFirstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1) // 上月第一天
    
      var lastMonthLastDay = date.setDate(0) // 上月最后一天
      // var day = new Date(date.getFullYear(), date.getMonth(), 0).getDate()
      // var lastMonthLastDay = new Date(date.getFullYear(), date.getMonth() - 1, day) // 上月最后一天
      var res = {
        thisMonthFirstDay: dateToYYYYMMDD(thisMonthFirstDay),
        thisMonthLastDay: dateToYYYYMMDD(thisMonthLastDay),
        lastMonthFirstDay: dateToYYYYMMDD(lastMonthFirstDay),
        lastMonthLastDay: dateToYYYYMMDD(lastMonthLastDay),
      }
      return res
    }
    
    • 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
    • 27
    • 28
    • 29

    代码中用到的日期转字符串方法

    // 返回 yyyy-MM-dd 格式字符串
    export function dateToYYYYMMDD(date) {
      var time = new Date(date);
      var y = time.getFullYear();
      var m = (time.getMonth() + 1);
      m = m > 9 ? m : '0' + m;
      var d = time.getDate();
      d = d > 9 ? d : '0' + d;
    
      return y + "-" + m + "-" + d;
    }```
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    404. 左叶子之和
    selenium无头浏览器
    MediaCodec原理与流程(重生之我要成为音视频开发大腕)
    【Java并发编程八】synchronized原理
    BAT026:删除当前目录及子目录下的空文件夹
    Linux系统的基本操作
    jenkins 部署 和构建java项目
    内存优化之重新认识内存
    正厚软件-软件测试用例设计方法之二-边界值
    PyTorch的简介和安装
  • 原文地址:https://blog.csdn.net/java_xxxx/article/details/126859821