# Zeitzähler



## Gast (19. Dez 2004)

Hallo

Ich möchte für meine HP ein Zeitzähler programmieren und in die HP einbauen. Ich habs schon mehrmals versucht, aber ohne Erfolg.
Der Zähler soll so aussehen: Der Zähler soll die Vergangene Zeit von einem bestimmten Datum und Uhrzeit ausrechnen und als Tage, Stunden, Minuten und Sekunden wiedergeben.

kann mir da jemand helfen?

mfg Christian


----------



## SebiB90 (19. Dez 2004)

in java oder javascript?
wenn javascript bitte verschieben


----------



## Gast (19. Dez 2004)

ich meine Javascript aber wie kann ich den Thread verschieben?
Ich bin doch Gast


----------



## SebiB90 (19. Dez 2004)

damit meinte ich ein mod


----------



## bygones (19. Dez 2004)

immer mit der Ruhe - ist schon unterwegs 

habe folgends irgendwo mal aufgegabelt:

```
<script language="JavaScript">
      // Ziel-Datum in MEZ
      var jahr=2004, monat=12, tag=18, stunde=0, minute=0, sekunde=0;
      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;

          /* Allgemeines Vorgehen:
           * Zunächst werden die vollen Jahre gezählt
           * und anschließend der Start- und Ziel-Monat auf den jeweiligen 1. gesetzt.
           * Nun werden erst die vollen Monate vom 1. zum 1. des Start- bzw. Ziel-Monats
           * berechnet und danach die tatsächlichen Monatstage wieder mit einbezogen.
           * Dieses Vorgehen vermeidet Probleme mit den verschiedenen Monatslängen.
           * Was übrig bleibt, wird in Tagen, Stunden, Minuten und Sekunden ausgedrückt.*/

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

          // Restliche Tage zum Monatsende ermitteln
          var restTage=0;
          var m=startDatum.getMonth();
          if(m==1-1|| m==3-1||m==5-1||m==7-1||m==8-1||m==10-1||m==12-1)
              restTage=31-startDatum.getDate();
          else if(m==4-1|| m==6-1||m==9-1||m==11-1) restTage=30-startDatum.getDate();
          else if(m==2-1) {
            if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0
                || startDatum.getFullYear()%400==0))
                    restTage=29-startDatum.getDate(); // Schaltjahr
            else restTage=28-startDatum.getDate();
          }

          // Start- und Ziel-Tag merken und auf 1 setzen
          var startTag=startDatum.getDate();
          var zielTag=zielDatum.getDate();
          startDatum.setDate(1);
          zielDatum.setDate(1);

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

          // Tatsächlichen Start- und Ziel-Tag berücksichtigen
          if(startDatum.getMonth()==zielDatum.getMonth()) {
            if(startTag<=zielTag) startDatum.setDate(startTag);
            else {
              monate--;
              tage=restTage+1;
            }
          }
          else {
            startDatum.setMonth(startDatum.getMonth()+1);
            if(startTag>=zielTag) tage=restTage+1;
            else {
              monate++;
              startDatum.setDate(startTag);
            }
          }
          zielDatum.setDate(zielTag);

          // Tage
          restTage=Math.floor((zielDatum-startDatum)/(24*60*60*1000));
          startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
          tage+=restTage;

          // 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></head>
<body onload="countdown()" text="#000000" bgcolor="#FF8000" link="#FF0000" alink="#FF0000" vlink="#FF0000">
 <form name="countdownform">
      <p style="font-size:26px; font-weight:bold;" align="center">
       Es dauert noch: <input style="background-color:#FF8000; border:0px;" size="68" name="countdowninput"> 
      </p>
    </form>
```


----------



## L-ectron-X (21. Dez 2004)

Wenn Du eine Java-Version für den Browser brauchst (Applet) kann ich mal was schreiben.


----------

