да вроде нормально считает. не знаю как с феврелем, нет особо времени проверять, надеюсь что нормально. кому нужно кол-во месяцев, код особо не изменился:
function passed(b, c, a) {
var d = new Date(a, c - 1, b, 0, 0, 0, 0),
e = new Date;
e.setHours(0, 0, 0, 0);
for (c = 0;; c++) {
a = new Date(d.getFullYear(), d.getMonth() + 2, 0);
a.getDate() > b && a.setDate(b);
if (a > e) break;
d = a
}
b = Math.round((e - d) / 864E5);
a = Math.floor(c / 12);
return [a*12+c % 12]
};
спасибо!