获取 某月 某周的 第一天和最后一天

Date.prototype.Format = function (fmt) { //author: meizz
      var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
      };
      if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
      for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
      return fmt;
    }

    function getMonthFirstLastDay(date){
      date = date.match(/\d+/g)
      const year = date[0]
      const month = Number(date[1])
      let firstDay=new Date(year,month-1,1);
      let currentMonth=firstDay.getMonth();
      let lastDay=new Date(firstDay.getFullYear(),currentMonth+1,0);
      firstDay=firstDay.Format("yyyy/MM/dd");
      lastDay=lastDay.Format("yyyy/MM/dd");

      return [firstDay,lastDay];
    }

    function getWeekFirstLastDay(tYear,week) {
      let tDate = new Date();
      let tWeek = Number(week.match(/\d+/g));
      let day = (function(){
        tDate = new Date(((tWeek+1)*7+(tYear-1970)*365)*24*60*60*1000);
        var day = tDate.getDay();
        return (day==0)?7:day;
      })();
      let firstDay = new Date(tDate.getTime() - (day -1)*24*60*60*1000).Format("yyyy/MM/dd");
      let lastDay = new Date(tDate.getTime() - (day -7)*24*60*60*1000).Format("yyyy/MM/dd");
      return [firstDay,lastDay]
    }

    let  [firstMonthDay,lastMonthDay] = getMonthFirstLastDay('2020/03月')
    console.log(firstMonthDay,lastMonthDay)


    let  [firstWeekDay,lastWeekDay] = getWeekFirstLastDay(2020,'W18')
    console.log(firstWeekDay,lastWeekDay)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值