javascript添加月份到目前为止

时间:2013-03-07 12:19:23

标签: javascript

我想在给定日期添加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);
    }

3 个答案:

答案 0 :(得分:2)

getMonth返回0到11之间的数字,表示1表示0表示,2月表示1表示等等

所以像这样修改

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

month = terminDate.getMonth() + 1;

答案 1 :(得分:0)

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

Javascript function to add X months to a date

答案 2 :(得分: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();
}

terminbismonthToAdd的值应在使用前验证,从值生成的日期也应如此。