Archief - aantal seconden tussen nu en gegeven datum berekenen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

bladwijzer

Legacy Member
Ik probeer een countdown timer te maken, die aftelt naar een bepaalde datum (4 april 2014, 12u 's middags). Ik weet echter bitter weinig af van javascript, en ik slaag er niet in om het juiste aantal seconden te berekenen tussen 'nu' en de einddatum.

Onderstaand script gebruik ik om de timer weer te geven. Zoals het hier staat, telt ie dus gewoon af van 1000 naar 0.

Kan er iemand mij helpen, en zeggen hoe ik dus van de variabele 'count' het aantal seconden maak tussen 'nu' en 4 april 2014, 12u 's middags?


Eeuwige dank :) :)

HTML:
<!DOCTYPE html>
<html>
<body>

<script>

var count=1000;

var counter=setInterval(timer, 1000); //1000 will  run it every 1 second

function timer()
{
  count=count-1;
  if (count <= 0)
  {
     clearInterval(counter);
     return;
  }

 document.getElementById("timer").innerHTML=count; // watch for spelling
}
</script>

<div id="timer" style="font-size: 200px;"></div>

</body>
</html>

dJeez

Legacy Member
Een dag duurt 24 uur, 1 uur duurt 60 minuten en 1 minuut duurt 60 seconden. Dus neem je het verschil tov de referentiedatum en vermenigvuldigt waar nodig om het geheel in seconden te krijgen.

Als je daar te tam voor bent kan je de logica van Het klokje van een miljard seconden ook gewoon gaan omdraaien.

-BVR-

Legacy Member
Edit fiddle - JSFiddle

Code:
var now = new Date(),
    now_ms = now.getTime(),
    then = new Date("April 4, 2014 12:00:00"),
    then_ms = then.getTime(),
    dif = Math.floor((then_ms - now_ms) / 1000);

console.log(dif);

De seconden zitten dan in de dif variabele.

De Wouter

Legacy Member
Je kan niet op setInterval + een counter variable rekenen voor een timer. Wat wel kan is in de setInterval functie de tijd checken (en er iets mee doen) zoals in sommige voorbeelden hierboven reeds werd aangetoond.

setInterval(function(){}, 1000) zal om de 1000 logic ticks uitgevoerd worden. In het beste geval is dat dus om de 1000 milliseconden MAAR er kan vertraging op zitten als er (ergens) code word uitgevoerd (synchroon) kan het even duren alvorens naar de volgende "logic tick" wordt gegaan.

Dastardly

Legacy Member
HTML:
<!DOCTYPE html>
<html>
<body>

<div id="timer" style="font-size: 200px;"></div>

<!-- Mag weg als je het stukje "x dagen, x uren en x seconden" niet gaat gebruiken -->
<div id="leesbareTimer" style="font-size: 20px;"></div>

<script>
var count = 1000;
var counter = setInterval(timer, 1000); 

function timer()
{
    var nu = new Date();
    var eindDatum = new Date(2014, 6, 4, 12, 0, 0);
    var verschil = Math.round((eindDatum - nu)/1000);
    
    if (verschil <= 0)
    {
        clearInterval(counter);
        return;
    }

    document.getElementById("timer").innerHTML = verschil;
    
    // Alles hiertussen weg als je het stukje "x dagen, y uren en z seconden" niet gaat gebruiken
    var leesbaarVerschil = convert(verschil);
    document.getElementById("leesbareTimer").innerHTML = 'Nog ' + leesbaarVerschil.days + ' dagen, '
    + leesbaarVerschil.hours + ' uren en ' + leesbaarVerschil.seconds + ' seconden';
    // Alles hiertussen weg als je het stukje "x dagen, y uren en z seconden" niet gaat gebruiken
}

// Alles hieronder weg als je het stukje "x dagen, y uren en z seconden" niet gaat gebruiken
function convert(seconds)
{
    
    var d = Math.floor(seconds / 86400);
    var h = Math.floor((seconds % 86400) / 3600);
    var m = Math.floor(((seconds % 86400) % 3600) / 60);    
    var s = ((seconds % 86400) % 3600) % 60;
    
    var returnValue = {days: d, hours : h, minutes: m, seconds : s};

    return returnValue;
}
</script>

</body>
</html>
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan