【问题标题】:How can i get dateRange based on month如何根据月份获取 dateRange
【发布时间】:2020-05-11 21:16:15
【问题描述】:

我正在尝试根据该月的一周开始到一周结束在一个月内获取 dateRange。例如,如果我过了 2020 年 1 月,那么 dateRange 应该从 [2019-12-30 到 2020-01-31] 获取数据,

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

【问题讨论】:

  • 我猜你想要月底而不是周末。
  • 我实际上想要一周的开始和一周的结束......所以在 2020 年,第 1 周从 2019 年 12 月 30 日开始,该月的结束在 1 月 31 日停止, 2020

标签: javascript arrays reactjs typescript javascript-objects


【解决方案1】:

谢谢@Kaca992 这是我为我工作的,它仍然可以重构。 #MakeThisCodeBetter

   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;
          }

【讨论】:

    【解决方案2】:

    我建议你检查 moment.js (https://momentjs.com/docs/#/get-set/week/)

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2014-05-22
      • 2017-04-22
      • 2012-04-15
      • 2017-01-01
      相关资源
      最近更新 更多