Определение «количество месяцев в разнице» подлежит толкованию. : -)
Вы можете получить год, месяц и день месяца из объекта даты в JavaScript. В зависимости от того, какую информацию вы ищете, вы можете использовать ее, чтобы выяснить, сколько месяцев проходит между двумя моментами времени.
Например, вне манеры, это определяет, сколько полных месяцев лежит между двумя датами, не считая неполных месяцев (например, исключая месяц, в котором находится каждая дата):
function monthDiff(d1, d2) {
var months;
months = (d2.getFullYear() - d1.getFullYear()) * 12;
months -= d1.getMonth() + 1;
months += d2.getMonth();
return months <= 0 ? 0 : months;
}
monthDiff(
new Date(2008, 10, 4), // November 4th, 2008
new Date(2010, 2, 12) // March 12th, 2010
);
// Result: 15: December 2008, all of 2009, and Jan & Feb 2010
monthDiff(
new Date(2010, 0, 1), // January 1st, 2010
new Date(2010, 2, 12) // March 12th, 2010
);
// Result: 1: February 2010 is the only full month between them
monthDiff(
new Date(2010, 1, 1), // February 1st, 2010
new Date(2010, 2, 12) // March 12th, 2010
);
// Result: 0: There are no *full* months between them
(Обратите внимание, что значения месяца в JavaScript начинаются с 0 = января.)
Включение дробных месяцев в вышеприведенное намного сложнее, потому что три дня в типичном феврале - это большая доля этого месяца (~ 10,714%), чем три дня в августе (~ 9,677%), и, конечно, даже февраль движущаяся цель в зависимости от того, является ли это високосным годом.
Есть также некоторые библиотеки даты и времени , доступные для JavaScript, которые, вероятно, облегчают подобные вещи.