我如何使用 momentjs 将一天添加到我的变量中

How can i add one day to my variable with momentjs

您好,我正在尝试解决这个问题,但我做不到, 我想计算一个月中的几天,没有星期日和星期六

这是我的代码

        startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
        endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
        calculate(startOfMonth, endOfMonth);



calculate(start,end){
        var numWorkDays = 0;
        var currentDate = start;
        console.log(currentDate, end)
        while (currentDate <= end) {
            if (currentDate !== 1 && currentDate !== 7) {
                numWorkDays++;
            }
            currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
            console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
        }
        console.log(numWorkDays)
    },

但是我的函数只计算了 14 天,而且天数增加了 2 谢谢

您添加天数的方式是正确的。

问题来自 console.log 行,其中又添加了一天。请删除或评论此行:

//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))

现在,您的代码中还有一些其他错误,这就是您没有得到预期结果的原因:

  • 周日和周六的号码是06,而不是17
  • 在您的代码中,currentDate 是一个字符串。例如,您正在比较 "2021-02-01"17。要获取它的编号,您必须从该字符串创建一个日期对象,然后调用 day()

所以最终的代码应该是这样的:

startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
        
function calculate(start,end){
        var numWorkDays = 0;
        var currentDate = start;
        while (currentDate <= end) {
          var currentDateAsNumber = moment(currentDate).day();
          var dayName = moment(currentDate).format('dddd');

            if (currentDateAsNumber !== 0 && currentDateAsNumber !== 6) {
                numWorkDays++;
            }
            currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
            //console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
        }
        console.log(numWorkDays)
    }

calculate(startOfMonth, endOfMonth);

如果需要,我也添加了一个变量dayName