Javascript update

Asked

Viewed 76 times

1

I’m developing an accountant for Black Week. However, I have a question: will the accountant really change the date when the 21st comes? Or is it better to create 2 files and change via FTP day 21 at 0:00? (I’m beginner, so the question)

<body>
<div id="dias"></div>
<div id="tempo">
    <a id="horas"></a>
    <a id="minutos"></a>
    <a id="segundos"></a>
</div>
<script>
var hoje = new Date().getDate();
var inicioBlackWeek = 20;

// Definindo a data final
if (hoje <= inicioBlackWeek)
    var contadorData = new Date("Nov 20, 2017 23:59:59").getTime();
else
    var contadorData = new Date("Nov 26, 2017 23:59:59").getTime();

// Atualizando a contagem decrescente a cada 1 segundo
var x = setInterval(function() {

    // Recebendo a data e hora atual
    var now = new Date().getTime();

    // Encontrando a distância entre agora e a data final
    var distance = contadorData - now;

    // Cálculos de tempo por dias, horas, minutos e segundos
    var dias = Math.floor(distance / (1000 * 60 * 60 * 24));
    var horas = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutos = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var segundos = Math.floor((distance % (1000 * 60)) / 1000);

    // Retornando resultados
    if (hoje <= inicioBlackWeek) {
        document.getElementById("dias").innerHTML = "<font style = 'color: red;'>Faltam apenas<br /><font style = 'font-size: 100pt'>" + dias + " dias</font></font>";
        document.getElementById("segundos").innerHTML = +segundos + "s<br /><font style = 'font-size 50pt'>para a Black Week!</font>";
    } else {
        document.getElementById("dias").innerHTML = "<font style = 'color: red;'>Restam apenas<br /><font style = 'font-size: 100pt'>" + dias + " dias</font></font>";
        document.getElementById("segundos").innerHTML = +segundos + "s<br /><font style = 'font-size 50pt'>de Black Week!</font>";
    }


    document.getElementById("horas").innerHTML = "e " + horas + "h ";
    document.getElementById("minutos").innerHTML = +minutos + "m ";


    // Se a contagem decrescente terminar, mudará a escrita das divs
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("dias").innerHTML = "<font style = 'color: red'>FINALIZADO</font>";
        document.getElementById("tempo").innerHTML = "";
    }
}, 1000);
</script>

1 answer

3

Your question O contador alterará mesmo a data quando chegar dia 21?

My answer Com certeza o contador vai alterar a data no dia 21.

To check is very simple, just suppose var hoje=21;, see

//supondo hoje ser dia 21
    var hoje=21;
    var inicioBlackWeek = 20;

    // Definindo a data final
    if (hoje <= inicioBlackWeek){

        var contadorData = new Date("Nov 20, 2017 23:59:59").getTime();
        //supondo hoje ser antes do dia 20
        console.log("hoje dia 19 contadorData => Nov 20, 2017 23:59:59");
        
    }else{

        var contadorData = new Date("Nov 26, 2017 23:59:59").getTime();
        //supondo hoje ser dia 21
        console.log("hoje dia 21 contadorData => Nov 26, 2017 23:59:59");
        
    }

Using the entire code

To check is very simple:

make the var hoje equal to 21.

var hoje = 21;

change this line var distance = contadorData - now;

for var distance = contadorData - (now+(86400*(hoje-new Date().getDate())*1000));

If the variable var hoje is equal to 21 and the difference between var hoje and the variable var contadorData der 5 days is that there was such a change that you doubted whether it would change.

With this amendment you will find that the text Faltam apenas will change to Restam apenas which is the Else condition of the if check (today <= startBlackWeek) {

See working.

var hoje = new Date().getDate();

	//para que após o dia 21 de novembro não seja necessário mudar para 22, 23 etc...
	var mes = (new Date().getMonth())+1;
	if (mes==10 || hoje<21){
		hoje = 21;
	}
	
	
	var inicioBlackWeek = 20;
	
	// Definindo a data final
	if (hoje <= inicioBlackWeek)
	var contadorData = new Date("Nov 20, 2017 23:59:59").getTime();
	else
	var contadorData = new Date("Nov 26, 2017 23:59:59").getTime();
	
	// Atualizando a contagem decrescente a cada 1 segundo
	var x = setInterval(function() {
	
	// Recebendo a data e hora atual
	var now = new Date().getTime();
	
	// Encontrando a distância entre agora e a data final
	var distance = contadorData - (now+(86400*(hoje-new Date().getDate())*1000));
	
	// Cálculos de tempo por dias, horas, minutos e segundos
	var dias = Math.floor(distance / (1000 * 60 * 60 * 24));
	var horas = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
	var minutos = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
	var segundos = Math.floor((distance % (1000 * 60)) / 1000);
	
	// Retornando resultados
	if (hoje <= inicioBlackWeek) {
	    document.getElementById("dias").innerHTML = "<font style = 'color: red;'>Faltam apenas<br /><font style = 'font-size: 100pt'>" + dias + " dias</font></font>";
	    document.getElementById("segundos").innerHTML = +segundos + "s<br /><font style = 'font-size 50pt'>para a Black Week!</font>";
	} else {
	    document.getElementById("dias").innerHTML = "<font style = 'color: red;'>Restam apenas<br /><font style = 'font-size: 100pt'>" + dias + " dias</font></font>";
	    document.getElementById("segundos").innerHTML = +segundos + "s<br /><font style = 'font-size 50pt'>de Black Week!</font>";
	}
	
	
	document.getElementById("horas").innerHTML = "e " + horas + "h ";
	document.getElementById("minutos").innerHTML = +minutos + "m ";
	
	
	// Se a contagem decrescente terminar, mudará a escrita das divs
	if (distance < 0) {
	    clearInterval(x);
	    document.getElementById("dias").innerHTML = "<font style = 'color: red'>FINALIZADO</font>";
	    document.getElementById("tempo").innerHTML = "";
	}
	}, 1000);
<div id="dias"></div>
<div id="tempo">
    <a id="horas"></a>
    <a id="minutos"></a>
    <a id="segundos"></a>
</div>

Needless to explain that up to 21/11 will always miss 5 days.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.