【问题标题】:How can i add one day to my variable with momentjs如何使用 momentjs 将一天添加到我的变量中
【发布时间】:2021-02-11 11:59:37
【问题描述】:

嗨,我想解决这个问题,但我不能, 我想计算一个月中的天数,没有星期天和星期六

这是我的代码

        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 谢谢

【问题讨论】:

    标签: javascript vue.js momentjs


    【解决方案1】:

    您正在以正确的方式添加天数。

    问题出在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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多