2012-06-29 1 views
0

Я хочу рассчитать новую дату, добавив несколько месяцев к определенной дате.Расчет сроков в JavaScript с разницей в месяцах

Например:

У меня есть дата "06/30/2012" (30 июня 2012 года), а также ряд месяцев "2" или "3" месяцев.

Теперь я хочу функцию, которая получает оба значения и возвращает дату, которая составляет 2 месяца после указанной даты.

Пожалуйста, покажите мне, как это может быть достигнуто.

+0

Некоторые один ответ это уже здесь, вы должны искать первую http://stackoverflow.com/questions/7763327/how-to-calculate-date-difference-in- javascript –

+0

Возможный дубликат http://stackoverflow.com/questions/5645058/how-to-add-months-in-javascript-date –

ответ

1

Вы можете попробовать поставить этот код, в котором есть все, что нужно с даты добавления/Вычитание

Date.prototype.add = function (sInterval, iNum){ 
     var dTemp = this; 
     if (!sInterval || iNum == 0) return dTemp; 
     switch (sInterval.toLowerCase()){ 
     case "ms": 
      dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum); 
      break; 
     case "s": 
      dTemp.setSeconds(dTemp.getSeconds() + iNum); 
      break; 
     case "mi": 
      dTemp.setMinutes(dTemp.getMinutes() + iNum); 
      break; 
     case "h": 
      dTemp.setHours(dTemp.getHours() + iNum); 
      break; 
     case "d": 
      dTemp.setDate(dTemp.getDate() + iNum); 
      break; 
     case "mo": 
      dTemp.setMonth(dTemp.getMonth() + iNum); 
      break; 
     case "y": 
      dTemp.setFullYear(dTemp.getFullYear() + iNum); 
      break; 
     } 
     return dTemp; 
    } 

    //sample usage 
    var d = new Date(); 
    var d2 = d.add("d", 3); //+3days 
    var d3 = d.add("h", -3); //-3hours 
    var d4 = d.add("mo", 2); //+2 Months 
0

Разбираем из частей и реконструкции:

function addMonths(d, offset) 
{ 
    return new Date(d.getFullYear(), d.getMonth()+offset, d.getDate()); 
} 

var d = new Date(); 
console.log(d.toDateString()); 
// Thu Jun 28 2012 

var twoMonthsFromNow = addMonths(d, 2); 
console.log(twoMonthsFromNow.toDateString()); 
// Sun Aug 28 112 
0

Если вы хотите, чтобы перейти в следующий месяц после переполнения дней, затем

var d = new Date(2012, 6-1, 30); 
d.setMonth(d.getMonth()+3); 

если вы хотите остаться в пределах е новый месяц, регулируя дату, а затем

var d = new Date(2012, 6-1, 30); 
var add_months = 8 
var d2 = new Date(Math.min(new Date(d.getYear(), d.getMonth()+add_months+1, 0), 
       new Date(d.getYear(), d.getMonth()+add_months, d.getDate()))) 
Смежные вопросы