JavaScript Date()格式和计算

JavaScript Date()格式和计算,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我想从input中获取日期,当通过引导日期选择器进行设置时,格式为dd-mm-yyyy,并基于此日期计算周末。不知怎的,我得到了一些奇怪的结果 $('#date-start').on('changeDate', function(){ var objThs = $(this); if(objThs.parent().is('.reportDateWeeks')){ var arrDateEl = objThs.val().split("-

我想从
input
中获取日期,当通过引导日期选择器进行设置时,格式为dd-mm-yyyy,并基于此日期计算周末。不知怎的,我得到了一些奇怪的结果

 $('#date-start').on('changeDate', function(){
        var objThs = $(this);
        if(objThs.parent().is('.reportDateWeeks')){
            var arrDateEl = objThs.val().split("-"),
                datStartDate = new Date(arrDateEl[2], arrDateEl[1] -1, arrDateEl[0]),
                datEndDate= new Date(datStartDate.setDate(datStartDate.getDate()+7)),
                datEndDateFormated = datEndDate.getDate() + '-' + datEndDate.getMonth() + 1 + '-' + datEndDate.getFullYear();

            console.log('start ' + objThs.val());
            console.log('end' + datEndDateFormated);

        }
    });
e、 g.如果我选择2014年5月4日,则console返回我:

2014年5月4日开始

2014年11月41日结束

我发现两个问题

  • 你在结果中逐月逐日切换
  • 您应该在
    datEndDate.getMonth()+1
    周围添加括号。否则,
    1
    将作为字符串而不是数字添加(在您的示例中生成
    41
  • 因此,修复后的图像可能会如下所示:

    var datEndDateFormated = (datEndDate.getMonth() + 1) + '-' 
        + datEndDate.getDate() + '-' 
        + datEndDate.getFullYear();
    
    好的,我找到了解决办法

     datEndDateFormated = datEndDate.getDate() + '-' + datEndDate.getMonth() + '-' + datEndDate.getFullYear();
    

    我真是瞎了。。抱歉,

    使用parseInt方法将字符串转换为整数,然后再将+1转换为整数

    datEndDateFormatted = datEndDate.getDate() + '-' + parseInt(datEndDate.getMonth() + 1) + '-' + datEndDate.getFullYear();
    

    这似乎不是一个有效的解决办法。您需要
    +1
    ,日期和月份仍然是切换的。用括号括起来是个好主意,但是使用parseInt可以更可靠地使用数据类型。@Vimal为什么需要
    parseInt
    getMonth()
    始终返回一个数字<代码>1始终是一个数字。无论如何,结果将用作字符串。我看不出有什么意义。