2013-03-07 3 views
0

Я хочу добавить 1 Месяц или 6 Месяцев в данную дату. Но если я добавлю один месяц, то год не будет увеличен. И если я добавлю 6 месяцев к июню, я вернусь к месяцу 00, но год увеличивается. Не могли бы вы помочь мне?javascript добавить месяц к настоящему времени

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

Вы пытались увеличить значение месяца в новом вызове Date()? 'var terminDate = new Date (parseInt (year), parseInt (month) + monthToAdd, parseInt (день));' –

+0

check: http: //stackoverflow.com/questions/5645058/how-to-add-months -to-date-in-javascript – Amrendra

+1

Реализованная версия с исправленными месяцами, если вы найдете ее полезной http://jsfiddle.net/LRA7d/2/ –

ответ

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; 
+0

См. мой пост редактирования ... –

+1

Да, я вижу, это будет показать декабрь как 12 вместо 0. +1 –

0

Вы должны использовать собственные методы объекта объекта javascript, чтобы обновить его. Проверьте принятый ответ на этот вопрос, например, это правильный подход к вашей проблеме.

Javascript function to add X months to a date

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 должно быть подтверждено перед использованием, как и следовало дата генерируется из значения.

Смежные вопросы