Какой-то у вас не красивый таймер
function timer (seconds, renderCallback, endCallback) {
if (typeof renderCallback !== 'function') {
throw new Error('renderCallback should be function');
}
if (typeof renderCallback === 'function') {
setTimeout(endCallback, seconds * 1000);
}
for (var i = 0; i < seconds; i++) {
setTimeout(function() {
renderCallback(new Date());
}, i * 1000);
}
}
var setTimer = function (secons) {
timer(5, function (date) {
console.log(date.toString());
}, setTimer);
};
setTimer(5);
А вот это
hours = '0'+hours;
не работает потому что 0 приводится к int и складывается с hours. Чтобы сделать то, что вы хотите вам нужно писать так:
hours = '0'+hours.toString();