在获得日期+天,如果超过一个月,月份不会增加?

时间:2011-10-13 18:00:14

标签: javascript datetime

我有2个输入,我正在使用Javascript获取日期。在第一个输入中我想添加14天(2周)和第二个21天(3周)。如果日期超过月份,则月份不会更改。

例如:

如果日期是2011年10月13日,我又增加了21天,那就是2011年10月3日而不是11月。

我该如何解决这个问题?

这是一个有效的例子:http://jsfiddle.net/2CKyL/

请注意,我想将其格式化为DD / MM / YY。

2 个答案:

答案 0 :(得分:0)

var month2 = b.getMonth() + 1;

$(".input2").val(b.getDate() + "/" + month2 +"/" + b.getFullYear());

您正在month重新使用input2,但月份是a的月份。

更清楚:

var a = new Date(+new Date + 12096e5);
var b = new Date(+new Date + 18144e5);

var month = a.getMonth() + 1;
// Here calc month2

$(".input1").val(a.getDate() + "/" + month +"/" + a.getFullYear());
$(".input2").val(b.getDate() + "/" + month +"/" + b.getFullYear());

两个日期(ab),两个 month变量!

答案 1 :(得分:0)

您可以使用modulo和getLastDayOfMonth函数执行此操作:

Date.prototype.getLastDayOfMonth = function() {
    return new Date(new Date(this.getFullYear(), this.getMonth() + 1, 0)).getDate();
};

$('input[type=button]').click(function() {
    var days = Math.random() + 100 | 0 + 30; // just a random number, nothing more
    a.setDate(a.getDate() + days % a.getLastDayOfMonth());
    $(".input1").val(a.getDate() + "/" + month + "/" + a.getFullYear());
});

Example