На дату получения + дни, если месяц превышен, месяц не увеличивается? - PullRequest
1 голос
/ 13 октября 2011

У меня есть 2 ввода, и я получаю дату с помощью Javascript. На первом входе я хочу добавить 14 дней (2 недели), а на втором 21 день (3 недели). Если дата проходит месяц, месяц не меняется.

Например:

Если дата 13 октября 2011 года, а я добавляю 21 день, то это будет 3 октября 2011 года, а не ноября.

Как я могу это исправить?

Это рабочий пример: http://jsfiddle.net/2CKyL/

Обратите внимание, что я хотел бы отформатировать его как DD / MM / YY.

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Вы можете сделать это по модулю и функции 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());
});

Пример

0 голосов
/ 13 октября 2011
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());

Два даты (a и b), Две month переменные!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...