如何根据月份获取 dateRange

Posted

技术标签:

【中文标题】如何根据月份获取 dateRange【英文标题】:How can i get dateRange based on month 【发布时间】: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 【参考方案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/)

希望这会有所帮助:)

【讨论】:

以上是关于如何根据月份获取 dateRange的主要内容,如果未能解决你的问题,请参考以下文章

如何根据日期获取月份的天数?

jquery中根据年份月份获取日期

怎样得到当前月份的天数(Java)?

如何在sql中从给定的月份和年份获取月份的第一天和最后一天

如何根据 user_id 和购买月份提取数据?

js获取上一个月份