alek77ru: Countdown

Hallo leutz...
ich suche schon seit geraumer zeit ein countdown script...
da ich selbst noch nicht so in sachen java bewandert, wollte ich mich im netz umsehen und ideen holen...
der script müsste stunden, minuten und sekunden runterzählen und bei null wieder neu starten, also nicht wie bei den meisten auf ein bestimmtes ereignis, sondern als eine schleife...
hat jemand eine idee???

  1. Hallo,

    da ich selbst noch nicht so in sachen java bewandert, wollte ich mich im netz umsehen und ideen holen...

    Javascript und Java sind zwei total unterschiedliche Sachen.

    der script müsste stunden, minuten und sekunden runterzählen und bei null wieder neu starten, also nicht wie bei den meisten auf ein bestimmtes ereignis, sondern als eine schleife...

    Was diese Scripte machen, die bis Silvester, bis Weihnachten oder bis Mama ein neues Baby bekommt runterzählen, ist nichts anderes als den Zeitunterschied von jetzt und dem angestrebten Datum zu errechnen und dann in die Zeitintervalle (Stunde, Minute, Sekunde) umzurechnen.

    Dein Script fällt also um einiges einfacher aus. Du gibts den Zeitunterschied an und fügst eine Neustartfunktion hinzu. Schau dir einfach mal die Zahlreichen Javascript-Countdowns im Netz an. Probieren geht über Studieren, oder wie war das?

    Viele Grüße,
    Philip

    1. <html>
        <head>
          <title>Datum-Countdown mit JavaScript</title>

      <script language="JavaScript">
            // Ziel-Datum in MEZ
            var jahr=2222, monat=2, tag=22, stunde=22, minute=22, sekunde=22;
            var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

      function countdown() {
              startDatum=new Date(); // Aktuelles Datum

      // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
              if(startDatum<zielDatum)  {

      var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

      // Jahre
                while(startDatum<zielDatum) {
                  jahre++;
                  startDatum.setFullYear(startDatum.getFullYear()+1);
                }
                startDatum.setFullYear(startDatum.getFullYear()-1);
                jahre--;

      // Monate
                while(startDatum<zielDatum) {
                  monate++;
                  startDatum.setMonth(startDatum.getMonth()+1);
                }
                startDatum.setMonth(startDatum.getMonth()-1);
                monate--;

      // Tage
                while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
                  tage++;
                  startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
                }

      // Stunden
                stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
                startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

      // Minuten
                minuten=Math.floor((zielDatum-startDatum)/(60*1000));
                startDatum.setTime(startDatum.getTime()+minuten*60*1000);

      // Sekunden
                sekunden=Math.floor((zielDatum-startDatum)/1000);

      // Anzeige formatieren
                (jahre!=1)?jahre=jahre+" Jahre,  ":jahre=jahre+" Jahr,  ";
                (monate!=1)?monate=monate+" Monate,  ":monate=monate+" Monat,  ";
                (tage!=1)?tage=tage+" Tage,  ":tage=tage+" Tag,  ";
                (stunden!=1)?stunden=stunden+" Stunden,  ":stunden=stunden+" Stunde,  ";
                (minuten!=1)?minuten=minuten+" Minuten  und  ":minuten=minuten+" Minute  und  ";
                if(sekunden<10) sekunden="0"+sekunden;
                (sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";

      document.countdownform.countdowninput.value=
                    jahre+monate+tage+stunden+minuten+sekunden;

      setTimeout('countdown()',200);
              }
              // Anderenfalls alles auf Null setzen
              else document.countdownform.countdowninput.value=
                  "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
            }
          </script>
        </head>

      <body onload="countdown()">
          <form name="countdownform">
            <p>
              <input size="75" name="countdowninput">
            </p>
          </form>
        </body>

      </html>

      Oder PHP

      <?
      // Silvester countdown
      // stichtag 1.1.2007 als Unixtime erzeugen
      $newDate = mktime(0,0,0, 1, 1, 2007);
      // aktuelle Zeit im Unixformat erzeugen
      $actDate = time();
      // Differenz berechnen (in Sekunden)
      $diffDate = ($newDate-$actDate);

      // Anzahl Tage = Sekunden /24/60/60
      // floor() liefert nur den Anteil vor dem Komma
      $days = floor($diffDate / 24 / 60 / 60 );
      // den verbleibenden Rest berechnen = Stunden
      $diffDate = $diffDate - ($days*24*60*60);
      // den Stundenanteil herausrechnen
      $hours = floor($diffDate / 60 / 60);
      $diffDate = ($diffDate - ($hours*60*60));
      // den Minutenanteil
      $minutes = floor($diffDate/60);
      $diffDate = $diffDate - ($minutes*60);
      // die verbleibenden Sekunden
      $seconds = floor($diffDate);

      // und das ganze dann Anzeigen:
      echo "Noch: $days Tage, $hours Stunden, $minutes Minuten und $seconds Sekunden<br>";
      ?>

      1. Oder PHP

        <?
        // Silvester countdown
        // stichtag 1.1.2007 als Unixtime erzeugen
        $newDate = mktime(0,0,0, 1, 1, 2007);
        // aktuelle Zeit im Unixformat erzeugen
        $actDate = time();
        // Differenz berechnen (in Sekunden)
        $diffDate = ($newDate-$actDate);

        // Anzahl Tage = Sekunden /24/60/60
        // floor() liefert nur den Anteil vor dem Komma
        $days = floor($diffDate / 24 / 60 / 60 );
        // den verbleibenden Rest berechnen = Stunden
        $diffDate = $diffDate - ($days*24*60*60);
        // den Stundenanteil herausrechnen
        $hours = floor($diffDate / 60 / 60);
        $diffDate = ($diffDate - ($hours*60*60));
        // den Minutenanteil
        $minutes = floor($diffDate/60);
        $diffDate = $diffDate - ($minutes*60);
        // die verbleibenden Sekunden
        $seconds = floor($diffDate);

        // und das ganze dann Anzeigen:
        echo "Noch: $days Tage, $hours Stunden, $minutes Minuten und $seconds Sekunden<br>";
        ?>

        Bei diesem Beispiel wird aber nur beim Laden die Zeit angezeigt, oder?

        MfG

        --
        SELF forever
        Mein Selfcode: ie:% br: fl:{ va:{ ls:& fo:| rl:( n4:( de:> ss:{ ch:? js:{ mo:| sh:( zu:{
    2. hallo leute ich bins wieder...
      danke für eure antworten, aber ich suche KEIN festes-ereignis-script, wie es "malan" vorschlägt, sondern etwas immer wieder wiederholendes...
      und "philip", wenn ich im netz fündig würde, hätte ich nicht hier reingeschrieben, sei mir nicht böse...
      das problem mit countdown-scripten alle, die ich bis jetzt gefunden habe sind mit einem festen ereignis verbunden...
      und wie ich einen neustart reinbastle habe ich keine ahnung, wie ich schon sagte "ich kenne mich da noch nicht so aus"

      1. Hallo,

        das problem mit countdown-scripten alle, die ich bis jetzt gefunden habe sind mit einem festen ereignis verbunden...

        Lies meinen Post bitte nochmal durch. Ich sagte bereits, dass du im Endeffekt nur einen Zeitunterschied brauchst. Ob der nun durch ein festes Zieldatum errechnet wird, oder ob du ihn direkt angibst, ist völlig egal.

        Den Timer betreffend schau dir das mal an:
        http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout

        Deine Script könnte so in der Art aussehen:
        <html>
        <head>
        <title></title>
        <script type="text/javascript">
        <!--
          var diff = 10; /* Zeitunterschied in Sekunden */
          var intervall = 1000; /* Intervall für das Herunterzählen in Millisekunden */

        function Zaehlen()
          {
            diff = diff - (intervall / 1000); /* Herunterzählen */
            document.getElementById("countdown").value = diff; /* Countdown-Feld aktualisieren */
            if(diff == 0)
            {
              Ereignis(); /* Dein Ereignis */
              diff = 60; /* Hochsetzen des Zeitunterschieds */
            }

        setTimeout("Zaehlen()", intervall); /* Timer setzen */
          }

        function Ereignis()
          {
            alert("Boom"); /* Dein Ereignis */
          }
        //-->
        </script>
        </head>

        <body>
        <input id="countdown" type="text" readonly /><br /><br />
        <a href="javascript:Zaehlen();">Start</a>
        </body>
        </html>

        Viele Grüße,
        Philip