我想在给定日期添加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);
}
答案 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对象的本机方法来更新它。例如,查看这个问题的已接受答案,这是解决问题的正确方法。
答案 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();
}
terminbis
和monthToAdd
的值应在使用前验证,从值生成的日期也应如此。