Где-то вот в этой части кода логические ошибки:
HTML код:
var year = final.year - d.getFullYear(); // вычисляем, сколько надо лет отсчитывать
var month = final.month - d.getMonth() - 1;
if (year && final.month < d.getMonth()) month += 12; // если количество оставшихся лет больше нуля, увеличиваем месяцы на 12. Ну по логике так надо сделать
var days = final.day - d.getDate() - 1;
if (month && final.day < d.getDate())
{
days += months[month-1]; // если месяцев больше 0, то количество дней увеличивается на количество дней в предыдущем месяце
month--;
}
var hour = final.hour - d.getHours();
var min = final.min - d.getMinutes();
var sec = final.sec - d.getSeconds();
Я в этом просто уверен)