1. #1

    Registered
    07/12/11
    Location
    dendermonde
    Posts
    215
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/2

    aantal seconden tussen nu en gegeven datum berekenen

    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 Code:
    <!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>
    no votes  

  2. #2
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    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.
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  3. #3

    Registered
    22/06/10
    Location
    Muizen (Mechelen)
    Posts
    286
    iTrader
    4 (100%)
    Mentioned
    0 Post(s)
    no votes  

  4. #4

    Registered
    14/08/10
    Location
    Diest
    Posts
    2,419
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    8/16
    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.
    no votes  

  5. #5
    De Wouter's Avatar
    Registered
    11/05/13
    Location
    Prov. Antwerpen
    Posts
    595
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    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.
    no votes  

  6. #6
    Dastardly's Avatar
    Registered
    20/08/09
    Location
    ...
    Posts
    3,812
    iTrader
    6 (100%)
    Mentioned
    0 Post(s)
    Reputation
    7/127
    HTML Code:
    <!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>
    Gory, gory, what a hell of way to die.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in