- JavaScript : Datum & Uhrzeit : Countup -
Ein Countup mit JavaScript, der Jahre, Monate, Tage, Stunden, Minuten und Sekunden seit einem beliebigen Zeitpunkt zählt.
Erfolgreich getestet mit Internet Explorer 5.5 und 6.0, Netscape 4.75, 6.1, 7.0 und 7.1, Mozilla 1.0, 1.21 und 1.4 sowie Opera 6.01, 7.01 und 7.23.
Im Countdown-Script wurden einfach der Start- und Ziel-Zeitpunkt miteinander vertauscht. Die Kalenderreform von 1582 (siehe Anmerkung beim Wochentag-Script) habe ich hier aber nicht berücksichtigt. (Wer von vor 1583 zählen möchte, muss noch ein wenig basteln
.
Demo:
Wie die Zeit vergeht. Schon
ist das neue Jahrtausend alt.
Der Quelltext:
Code: <html>
<head>
<title>Datum-Countup mit JavaScript</title>
<script language="JavaScript">
var jahr=2001, monat=1, tag=1, stunde=0, minute=0, sekunde=0; // Start-Datum in MEZ
function countup() {
var startDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
zielDatum=new Date(); // Aktuelles Datum
// Countup erst berechnen und anzeigen, wenn Start-Datum überschritten wird
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.countupform.countupinput.value=
jahre+monate+tage+stunden+minuten+sekunden;
}
// Anderenfalls alles auf Null setzen
else document.countupform.countupinput.value=
"0 Jahre, 0 Monate, 0 Tage, 0 Stunden, 0 Minuten und 00 Sekunden";
setTimeout('countup()',200);
}
</script>
</head>
<body onload="countup()">
<form name="countupform">
<p>
<input size="75" name="countupinput">
</p>
</form>
</body>
</html>