JSFiddle - React, Tailwind, and code Playground

HTML

<span id="regresive"></span>

CSS

* {
	font-family: "Calibri";
	font-size: 13px;
}

JavaScript

var today = function() { return getNowDate(-5); },
	limit = setLimit(-5, 0, 21),
	format = "%%D%% DĂ­as, %%H%% Horas, %%M%% Minutos, %%S%%.";

document.addEventListener("DOMContentLoaded", function() {
	setInterval(update, 1000);
});

function getNowDate(UTC) {
	
	var date = new Date(), secs = 0;
	
	secs += (date.getUTCHours() + UTC) * 60 * 60;
	secs += date.getMinutes() * 60;
	secs += date.getSeconds();
	
	return secs;
	
}

function setLimit(UTC, days, hours, minutes, seconds) {
	
	var utchours = new Date().getUTCHours() + UTC, plusHours = 0;
	
	if(utchours >= hours) {
		hours = (24 + hours) % 24;
		++days;
	}
	
	var secs = 0;
		secs += seconds || 0;
		secs += minutes * 60 || 0;
		secs += hours * 60 * 60 || 0;
		secs += days * 24 * 60 * 60 || 0;
	
	return secs;
		
}

function update() {
	
	var diff = limit - today(),
		days = (diff / 24 / 60 / 60) % 7,
		hours = (diff / 60 / 60) % 24,
		minutes = (diff / 60) % 60,
		seconds = (diff) % 60;
	
	var elapsed = format.replace(/%%D%%/g, fixDigits(days, 1));
		elapsed = elapsed.replace(/%%H%%/g, fixDigits(hours, 2));
		elapsed = elapsed.replace(/%%M%%/g, fixDigits(minutes, 2));
		elapsed = elapsed.replace(/%%S%%/g, fixDigits(seconds, 2));

	document.getElementById("regresive").innerHTML = elapsed;
	
}

function fixDigits(num, digits) {
	
	num = parseInt(num);
	num = (isNaN(num))? 0 : num;
	num = num.toString();
	
	for(var i = 0; num.length < digits; ++i)
		num = "0" + num;
	
    return num;
	
}