А почему не заменить вот тут на дату/время которое вам нужно?
// Строка 33
var tl = new Date('2020/01/01 00:00:00');
Ну или собрать объект Date из переменных day, our, min, esc?
Второй вариант решения:
(function(day, hour, min, sec, callbackInterval, callbackEnd) {
var resultInSeconds = ((new Date).getTime() / 1000) + ((day * 24 * 60 * 60) + (hour * 60 * 60) + (min * 60) + sec),
dhm = function(t) {
var cd = 24 * 60 * 60 * 1000,
ch = 60 * 60 * 1000,
d = Math.floor(t / cd),
h = Math.floor((t - d * cd) / ch),
m = Math.floor((t - d * cd - h * ch) / 60000),
s = Math.round((t - d * cd - h * ch - m * 60000) / 1000);
if (m === 60) {
h++;
m = 0;
}
if (h === 24) {
d++;
h = 0;
}
return [d, h, m, s];
},
interval = setInterval(function() {
var now = (new Date()).getTime() / 1000;
if (now >= resultInSeconds) {
callbackEnd.call(window);
clearInterval(interval);
return;
}
callbackInterval.apply(window, dhm((resultInSeconds - now) * 1000));
}, 1000);
})(
1, // дни
2, // часы
3, // минуты
40, // секунды
// вызывается каждую секунду
function(days, hours, minutes, seconds) {
console.log(arguments);
},
// вызывается в конце
function() {
console.log('Время вышло!');
}
);