0

我想将 1 个月或 6 个月添加到给定的日期。但是,如果我添加一个月,则年份不会增加。如果我将 6 个月添加到 6 月,我会返回 00 月份,但年份会增加。你能帮帮我吗?

function addToBis(monthToAdd){
        var tmp = $("#terminbis").val().split('.');

        var day = tmp[0];
        var month = tmp[1];
        var year = tmp[2];

        var terminDate = new Date(parseInt(year),parseInt(month), parseInt(day));
        terminDate.setMonth(terminDate.getMonth()+monthToAdd);

        day = "";
        month = "";
        year = "";

        if(terminDate.getDate() < 10){
            day = "0"+terminDate.getDate();
        } else{
            day = terminDate.getDate();
        }

        if(terminDate.getMonth() < 10){
            month = "0"+terminDate.getMonth();
        } else{
            month = terminDate.getMonth();
        }

        year = terminDate.getFullYear();


        $("#terminbis").val(day+"."+month+"."+year);
    }
4

3 回答 3

2

getMonth 返回一个从 0 到 11 的数字,这意味着 0 代表一月,1 代表二月 ...等

所以像这样修改

var terminDate = new Date(parseInt(year),parseInt(month - 1), parseInt(day));
    terminDate.setMonth(terminDate.getMonth()+monthToAdd);

month = terminDate.getMonth() + 1;
于 2013-03-07T12:34:21.223 回答
0

您应该使用 javascript Date 对象的本机方法来更新它。例如,查看此问题已接受的答案,这是解决问题的正确方法。

Javascript函数将X个月添加到日期

于 2013-03-07T12:23:45.473 回答
0

该函数可以更简洁地编写为:

function addToBis(monthToAdd){

    function z(n) {return (n<10? '0':'') + n}

    var tmp = $("#terminbis").val().split('.');
    var d = new Date(tmp[2], --tmp[1], tmp[0]);

    d.setMonth(d.getMonth() + monthToAdd);

    $("#terminbis").val(z(d.getDate()) + '.' + z(d.getMonth() + 1)
                       + '.' + d.getFullYear();
}

terminbis和的值monthToAdd应在使用前进行验证,从该值生成的日期也应验证。

于 2013-03-07T13:12:17.013 回答