【问题标题】:How to get week numbers of current month in moment.js如何在moment.js中获取当前月份的周数
【发布时间】:2017-04-25 06:50:55
【问题描述】:

我想获取特定月份的周数 例如:2017 年 1 月,这个月的周数是 [52,1,2,3,4,5] 那么如何在数组中获取上述内容? 谢谢

【问题讨论】:

    标签: javascript ember.js momentjs


    【解决方案1】:

    这样更有效率:

     const firstDayOfMonth = moment(`${ year }-${ month }`, 'YYYY-MM-DD');
     let weekIndices = [];
    
     let currentDay = moment(firstDayOfMonth, 'YYYY-MM-DD');
     weekIndices.push(currentDay.isoWeek());
    
     while(currentDay.month() === firstDayOfMonth.month()) {
         currentDay.add(1, 'weeks');
         weekIndices.push(currentDay.isoWeek());
     }
    
    return weekIndices;
    

    【讨论】:

      【解决方案2】:
       const firstDayOfMonth = moment(`${ year }-${ month }`, 'YYYY-MM-DD');
       const numOfDays = firstDayOfMonth.daysInMonth();
       let weeks = new Set();
      
       for(let i = 0; i < numOfDays; i++){
           const currentDay = moment(firstDayOfMonth, 'YYYY-MM-DD').add(i, 'days');
      
           weeks.add(currentDay.isoWeek());
       }
      
       return Array.from(weeks)
      

      【讨论】:

      • 更高效:
      【解决方案3】:

      我知道我不应该,但我喜欢这个问题 :) 你能改进一下吗?

          function showWeeks(year, month) {
      
            let firstWeek = moment(new Date(year,month,1)).isoWeek();
            let lastWeek = moment(new Date(year,month+1,0)).isoWeek();
      
            let out = [firstWeek];
            if (firstWeek === 52 || firstWeek === 53) {
              firstWeek=0;
            }
      
            for ( let i = firstWeek+1; i<= lastWeek; i++) {
              out.push(i);
            }
      
            return out;
          }
      
          console.log(showWeeks(2017, 0)); // [52, 1, 2, 3, 4, 5]
          console.log(showWeeks(2021, 0)); // [53, 1, 2, 3, 4]
          console.log(showWeeks(2017, 11)); // [48, 49, 50, 51, 52]
          console.log(showWeeks(1986, 9)); // [40, 41, 42, 43, 44]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多