【问题标题】:Get Elapsed Weekdays Between Two Dates Using MomentJS使用 MomentJS 获取两个日期之间经过的工作日
【发布时间】:2013-09-12 07:35:36
【问题描述】:

有什么方法可以使用 MomentJS 获取两个日期之间经过的工作日?工作日将是没有周末的那一周,或者是星期一、星期二、星期三、星期四和星期五。到目前为止,我尝试使用diff()方法(http://momentjs.com/docs/#/displaying/difference/)如下:

var daysElapsed = today.diff(past, 'days');

据我所知,diff() 仅通过提供所有两个日期之间的天数(包括周末)来工作。感谢您的宝贵时间!

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您需要为此编写自己的函数。

    这并不难,因为您知道确切的开始和结束日期。

    1. 获取开始日期和结束日期是一周中的哪一天。
    2. 仅计算两者之间的工作日。

    我认为这将是非常直接的实施。

    【讨论】:

    【解决方案2】:
    let start = moment(startDate, 'YYYY-MM-DD'); //Pick any format
    let end = moment(); //right now (or define an end date yourself)
    let weekdayCounter = 0;  
    
    while (start <= end) {
     if (start.format('ddd') !== 'Sat' && start.format('ddd') !== 'Sun'){
       weekdayCounter++; //add 1 to your counter if its not a weekend day
     }
     start = moment(start, 'YYYY-MM-DD').add(1, 'days'); //increment by one day
    }
    console.log(weekdayCounter); //display your total elapsed weekdays in the console!
    

    【讨论】:

      【解决方案3】:

      虽然这个问题已经很老了,但我偶然发现了它,找不到真正的答案。

      我希望这个解决方案对其他人也有帮助:

      const momentStart = moment(initialDate);
      const momentFinal = moment(finalDate);
      
      // Get the diff in days between both dates
      const diff = momentFinal.diff(momentStart, "days");
      
      // If diff is 7 or bigger, all days are included
      if (diff >= 7) {
        return moment.weekdays();
      }
      
      // Need to calculate, check which day we start from
      const firstDay = momentStart.day();
      const weekdaysBetween = [];
      
      // For each diff day, we get the next one)
      for (let i = 0; i <= diff; i++) {
        // use % to loop to beginning again (e.g: start at friday and have +4)
        weekdaysBetween.push(moment.weekdays((firstDay + i) % 7));
      }
      
      return weekdaysBetween;
      

      您也可以查看working demo version here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-05
        • 2021-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多