Javascript 如何根据月份获取日期范围

Javascript 如何根据月份获取日期范围,javascript,arrays,reactjs,typescript,javascript-objects,Javascript,Arrays,Reactjs,Typescript,Javascript Objects,我试图获得一个月内的日期范围,以该月的一周开始到周末为基础。例如,如果我超过2020年1月,dateRange应该从[2019-12-30到2020-01-31]获取数据 二月=[2020-02-03至2020-02-28], 三月=[2020-03-02至2020-04-03] 我建议您检查一下moment.js() 希望这有帮助:)我建议您检查一下moment.js() 希望这有帮助:)谢谢@Kaca992这是我为我工作的东西,它仍然可以重构#使此代码更好 function Grego

我试图获得一个月内的日期范围,以该月的一周开始到周末为基础。例如,如果我超过2020年1月,dateRange应该从[2019-12-30到2020-01-31]获取数据

二月=[2020-02-03至2020-02-28],
三月=[2020-03-02至2020-04-03]


我建议您检查一下moment.js()


希望这有帮助:)

我建议您检查一下moment.js()


希望这有帮助:)

谢谢@Kaca992这是我为我工作的东西,它仍然可以重构#使此代码更好

   function GregorianWeeksInAYear(){

        let year = 2020;
        let month = 0;
        let startDate = "";
        let endDate = "";

         const monthsInYear = [];


      while (month < 12){
       let isLeapYear = moment([year]).isLeapYear();

     if(isLeapYear){
     if(month > 0){
       startDate = moment([year,month]).startOf('month').isoWeekday(1).add(7,'days');

     }
      else{
         startDate = moment([year,month]).startOf('month').isoWeekday(1);

      }

       endDate = 


moment([year,month]).endOf('month').isoWeekday(1).add(5,'days').subtract(1,'days');
     }
       else{
     startDate = moment([year,month]).startOf('month').isoWeekday(1);

    endDate = moment([year,month]).endOf('month').isoWeekday(1).add(4,'days');
    }
       monthsInYear.push({start:moment(startDate).format('YYYY-MM-DD'),end:moment(endDate).format('YYYY-MM-DD'),name: moment(startDate).add(4,'days').format('MMMM')})

   month++;
        }

     return monthsInYear;
          }
函数GregorianWeeksInAYear(){
年份=2020年;
设月=0;
让startDate=“”;
让endDate=“”;
常数monthsInYear=[];
而(月<12){
设isLeapYear=时刻([year])。isLeapYear();
如果(每年){
如果(月份>0){
startDate=时刻([年,月]).startOf('月').isoWeekday(1)。加上(7,'天');
}
否则{
startDate=时刻([年,月]).startOf('月').isoWeekday(1);
}
结束日期=
时刻([年,月]).endOf('月').isoWeekday(1)。加(5,'天')。减(1,'天');
}
否则{
startDate=时刻([年,月]).startOf('月').isoWeekday(1);
endDate=时刻([年,月]).endOf('月').isoWeekday(1)。添加(4,'天');
}
monthsInYear.push({开始:时刻(startDate).格式('YYYY-MM-DD'),结束:时刻(endDate).格式('YYYY-MM-DD'),名称:时刻(startDate).添加(4,'days')。格式('MMMM'))
月份++;
}
每月返回;
}

谢谢@Kaca992这是我为自己工作得到的,它仍然可以重构#使此代码更好

   function GregorianWeeksInAYear(){

        let year = 2020;
        let month = 0;
        let startDate = "";
        let endDate = "";

         const monthsInYear = [];


      while (month < 12){
       let isLeapYear = moment([year]).isLeapYear();

     if(isLeapYear){
     if(month > 0){
       startDate = moment([year,month]).startOf('month').isoWeekday(1).add(7,'days');

     }
      else{
         startDate = moment([year,month]).startOf('month').isoWeekday(1);

      }

       endDate = 


moment([year,month]).endOf('month').isoWeekday(1).add(5,'days').subtract(1,'days');
     }
       else{
     startDate = moment([year,month]).startOf('month').isoWeekday(1);

    endDate = moment([year,month]).endOf('month').isoWeekday(1).add(4,'days');
    }
       monthsInYear.push({start:moment(startDate).format('YYYY-MM-DD'),end:moment(endDate).format('YYYY-MM-DD'),name: moment(startDate).add(4,'days').format('MMMM')})

   month++;
        }

     return monthsInYear;
          }
函数GregorianWeeksInAYear(){
年份=2020年;
设月=0;
让startDate=“”;
让endDate=“”;
常数monthsInYear=[];
而(月<12){
设isLeapYear=时刻([year])。isLeapYear();
如果(每年){
如果(月份>0){
startDate=时刻([年,月]).startOf('月').isoWeekday(1)。加上(7,'天');
}
否则{
startDate=时刻([年,月]).startOf('月').isoWeekday(1);
}
结束日期=
时刻([年,月]).endOf('月').isoWeekday(1)。加(5,'天')。减(1,'天');
}
否则{
startDate=时刻([年,月]).startOf('月').isoWeekday(1);
endDate=时刻([年,月]).endOf('月').isoWeekday(1)。添加(4,'天');
}
monthsInYear.push({开始:时刻(startDate).格式('YYYY-MM-DD'),结束:时刻(endDate).格式('YYYY-MM-DD'),名称:时刻(startDate).添加(4,'days')。格式('MMMM'))
月份++;
}
每月返回;
}

我想你想要的是月底而不是周末。实际上我想要的是一周的开始和一周的结束……因此在2020年,第一周从2019年12月30日开始,该月的周末在1月31日结束,2020我想你想要的是月底而不是周末。我实际上想要的是一周的开始和结束……因此在2020年,第一周从2019年12月30日开始,该月的周末在2020年1月31日结束