Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用momentjs向变量添加一天_Javascript_Vue.js_Momentjs - Fatal编程技术网

Javascript 如何使用momentjs向变量添加一天

Javascript 如何使用momentjs向变量添加一天,javascript,vue.js,momentjs,Javascript,Vue.js,Momentjs,嗨,我想解决这个问题,但我做不到, 我想计算一个月的天数,没有周日和周六 这是我的密码 startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD'); endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD'); calculate(startOfMonth, endOfMonth); calc

嗨,我想解决这个问题,但我做不到, 我想计算一个月的天数,没有周日和周六

这是我的密码

        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)
    },
startOfMonth=moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth=moment().clone().endOf('month').format('YYYY-MM-DD');
计算(开始月、结束月);
计算(开始、结束){
var numWorkDays=0;
var currentDate=开始;
console.log(当前日期,结束)

而(currentDate您正在以正确的方式添加天数

问题来自于带有
控制台.log
的行,其中再次添加一天。只需删除或注释此行:

//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
现在,您的代码中还有一些其他错误,这就是为什么您没有得到预期的结果:

  • 星期日和星期六的数字是
    0
    6
    ,而不是
    1
    7
  • 在您的代码中,
    currentDate
    是一个字符串。因此,您正在比较,例如,
    “2021-02-01”
    1
    7
    。要获取其编号,您必须从该字符串创建一个日期对象,然后调用
    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);
startOfMonth=moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth=moment().clone().endOf('month').format('YYYY-MM-DD');
函数计算(开始、结束){
var numWorkDays=0;
var currentDate=开始;
while(当前日期)