Разница в месяцах между двумя датами в JavaScript - PullRequest
114 голосов
/ 29 марта 2010

Как бы я вычислил разницу для двух объектов Date () в JavaScript, при этом возвращая только количество месяцев в разнице?

Любая помощь будет великолепна:)

Ответы [ 24 ]

0 голосов
/ 08 декабря 2017

Он также считает дни и конвертирует их в месяцы.

function monthDiff(d1, d2) {
    var months;
    months = (d2.getFullYear() - d1.getFullYear()) * 12;   //calculates months between two years
    months -= d1.getMonth() + 1; 
    months += d2.getMonth();  //calculates number of complete months between two months
    day1 = 30-d1.getDate();  
    day2 = day1 + d2.getDate();
    months += parseInt(day2/30);  //calculates no of complete months lie between two dates
    return months <= 0 ? 0 : months;
}

monthDiff(
    new Date(2017, 8, 8), // Aug 8th, 2017    (d1)
    new Date(2017, 12, 12)  // Dec 12th, 2017   (d2)
);
//return value will be 4 months 
0 голосов
/ 07 августа 2017

Посмотрите, что я использую:

function monthDiff() {
    var startdate = Date.parseExact($("#startingDate").val(), "dd/MM/yyyy");
    var enddate = Date.parseExact($("#endingDate").val(), "dd/MM/yyyy");
    var months = 0;
    while (startdate < enddate) {
        if (startdate.getMonth() === 1 && startdate.getDate() === 28) {
            months++;
            startdate.addMonths(1);
            startdate.addDays(2);
        } else {
            months++;
            startdate.addMonths(1);
        }
    }
    return months;
}
0 голосов
/ 11 февраля 2016

anyVar = (((DisplayTo.getFullYear () * 12) + DisplayTo.getMonth ()) - ((DisplayFrom.getFullYear () * 12) + DisplayFrom.getMonth ()));

0 голосов
/ 19 февраля 2012

Один из подходов - написать простую веб-службу Java (REST / JSON), использующую библиотеку JODA

http://joda -time.sourceforge.net / faq.html # DateDiff

для расчета разницы между двумя датами и вызова этой службы из javascript.

Предполагается, что ваш сервер находится на Java.

...