【问题标题】:How to get the weeks number which are part of the month如何获得属于本月一部分的周数
【发布时间】:2020-02-24 08:19:19
【问题描述】:

我正在为月份创建二维数组(以创建日历月视图),我需要计算该数组的高度。

【问题讨论】:

    标签: javascript date momentjs


    【解决方案1】:

    经过一番研究,我以自己的方式解决了这个问题。我正在与您分享代码:

    import moment from 'moment';
    
    const height = calcMonthArrayHeight(moment());
    
    function calcMonthArrayHeight(day) {
        const firstDay = day.startOf('month').isoWeekday() - 1;
        return Math.ceil((firstDay + day.daysInMonth()) / 7);
    }
    
    
    

    【讨论】:

      【解决方案2】:

      你的算法没问题,但你不需要库,例如

      // Month is calendar month number, 1 for Jan, 2 for Feb, etc.
      // Based on ISO weeks: Monday is first day of week
      function getHeightOfWeekMatrix(year, month) {
        let first = (new Date(year, month-1, 1).getDay() || 7) - 1;
        let last  = new Date(year, month, 0).getDate();
        return Math.ceil((first + last) / 7);
      }
      
      // Number of weeks for matrix 2021
      let y = 2021;
      let m = 'JanFebMarAprMayJunJulAugSepOctNovDec'.match(/\w{3}/g);
      for (let i=0; i<m.length; i++)
        console.log(m[i] + ' ' + y + ': ' + getHeightOfWeekMatrix(y, i+1));

      大多数日历似乎所有月份都使用 6 周,并从第一行开始填充。

      【讨论】:

      • 当然,我们不必使用moment,但就我而言,它已经被使用过(我希望在许多大项目中,它也被使用过)。无论如何,感谢您的反馈。
      猜你喜欢
      • 1970-01-01
      • 2012-12-12
      • 2015-11-14
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2020-01-22
      • 2018-01-02
      • 1970-01-01
      相关资源
      最近更新 更多