Countdown timer is bringing the wrong value

3

I copied a function from W3Schools to create a regressive timer. But the end date will be dynamically passed, in case the end date would be 09/06/2018

My question is how to pass the end date in a way that function new Data().getTime(); does the conversion correctly.

At the moment it is returning me like this:

Thecallingfunction:

$.get("/Home/ConsultarCicloData", null, function (data) {
                if (data != null && data != undefined) {
                    var objeto = JSON.parse(data);
                    $('#lblCiclo').text(objeto.ciclo);
                    $('#lblData').text(objeto.dataIni)
                    $('#lblDataFim').text(objeto.dataFim);

                    Cronometro(objeto.dataFim, objeto.ciclo);
                }
            });

 function Cronometro(dtFinal, ciclo) {
            var d, m, a;
            var dtF = dtFinal.replace("/", " ").replace("/", " ");
            dtF = dtF.split(" ");
            d = dtF[0];
            m = dtF[1];
            a = dtF[2];
            var countDownDate = new Date(a,m,d).getTime();

            // Update the count down every 1 second
            var x = setInterval(function () {

                // Get todays date and time
                var now = new Date().getTime();

                // Find the distance between now an the count down date
                var distance = countDownDate - now;

                // Time calculations for days, hours, minutes and seconds
                var days = Math.floor(distance / (1000 * 60 * 60 * 24));
                var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
                var seconds = Math.floor((distance % (1000 * 60)) / 1000);

                // Output the result in an element with id="demo"

                document.getElementById("demo").innerHTML = "Faltam " + days + " Dias " + hours + " Horas "
                    + minutes + " Minutos para o fechamento da Semana " + ciclo;

                //If the count down is over, write some text 
                if (distance < 0) {
                    clearInterval(x);
                    document.getElementById("demo").innerHTML = "";
                }
            }, 1000);

        }
    
asked by anonymous 09.06.2018 / 19:49

1 answer

2
  

The NaN problem in Edge and Safari browsers has been fixed    in this question .

Change new Date() to default:

var countDownDate = new Date(m+" "+d+","+a).getTime();

Example:

function Cronometro(dtFinal, ciclo) {
   var d, m, a;
   var dtF = dtFinal.replace("/", " ").replace("/", " ");
   dtF = dtF.split(" ");
   d = dtF[0];
   m = dtF[1];
   a = dtF[2];
   var countDownDate = new Date(m+" "+d+","+a).getTime();

   // Update the count down every 1 second
   var x = setInterval(function () {

       // Get todays date and time
       var now = new Date().getTime();

       // Find the distance between now an the count down date
       var distance = countDownDate - now;

       // Time calculations for days, hours, minutes and seconds
       var days = Math.floor(distance / (1000 * 60 * 60 * 24));
       var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
       var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
       var seconds = Math.floor((distance % (1000 * 60)) / 1000);

       // Output the result in an element with id="demo"

       document.getElementById("demo").innerHTML = "Faltam " + days + " Dias " + hours + " Horas "
           + minutes + " Minutos para o fechamento da Semana " + ciclo;

       //If the count down is over, write some text 
       if (distance < 0) {
           clearInterval(x);
           document.getElementById("demo").innerHTML = "";
       }
   }, 1000);

}
        
Cronometro("10/06/2018", "14/2018");
<div id="demo"></div>
    
09.06.2018 / 20:08