Определение «количество месяцев в разнице» подлежит многому толкованию. :-)
Вы можете получить год, месяц и день месяца из объекта даты 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 начинаются с возврата DisplayTo.getMonth () - DisplayFrom.getMonth () + (12 * (DisplayTo.getFullYear () - DisplayFrom.getFullYear ())); = Январь.)
Включение дробных месяцев в вышеперечисленное намного сложнее, потому что три дня в типичном феврале составляют большую часть этого месяца (~ 10,714%), чем три дня в августе (~ 9,677%), и, конечно, даже февраль - движущаяся цель в зависимости от того, является ли это високосным годом.
Существуют также библиотеки времени и времени для JavaScript, которые, вероятно, упрощают эту задачу.