222 lines
5.2 KiB
Markdown
222 lines
5.2 KiB
Markdown
# Javascript Zeitdifferenzrechner
|
|
|
|
```
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Language" content="de" />
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>Zeitspannenrechner</title>
|
|
<script type="text/javascript">
|
|
<!--
|
|
Jahr = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
|
|
var Ergebnis;
|
|
Schalttag = 0;
|
|
Datum = new Date();
|
|
|
|
function Datumsetzen()
|
|
{
|
|
document.Zeitrechner.Tag2.value = this.Datum.getDate();
|
|
document.Zeitrechner.Monat2.value = this.Datum.getMonth()+1;
|
|
document.Zeitrechner.Jahr2.value = this.Datum.getFullYear();
|
|
};
|
|
// berechnet, ob das jahr ein schaltjahr ist und gibt nen boolschen Ausdruck zurueck
|
|
function Schaltjahr(Jahr)
|
|
{
|
|
if ((Jahr % 4 == 0 && Jahr % 400 == 0) ||(Jahr % 4 == 0 && Jahr % 100 != 0) )
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
};
|
|
//berechnet die Tagesanzahl, die zwischen dem Jahresbeginn und dem uebergebenen Datum liegt
|
|
function AnzahlTage(Tag,Monat)
|
|
{
|
|
var Tage = 0;
|
|
for (var i=0; i<(Monat-1); i++)
|
|
{
|
|
Tage += Jahr[i];
|
|
}
|
|
Tage += Tag;
|
|
return Tage;
|
|
};
|
|
//Errechnet die Schalttage fuer die Differenz
|
|
function Schalttage()
|
|
{
|
|
Schalttag = 0;
|
|
//Falls das erste Jahr ein Schaltjahr ist und das Datum im Februar oder Januar liegt
|
|
if (Schaltjahr(jahr1) && monat1<3)
|
|
{
|
|
//liegt das Datum vor den Schalttag, wird der Schalttag aufgerechnet
|
|
if (monat1 ==1 || (monat1 ==2 && tag1 <=29))
|
|
{
|
|
Schalttag += 1;
|
|
};
|
|
};
|
|
//Falls das zweite Jahr ein Schaltjahr ist und das Datum nach exkl. Februar liegt
|
|
if (Schaltjahr(jahr2) && monat2>=2)
|
|
{
|
|
//liegt das Datum hinter dem Schalttag, so wird ein Tag aufsummiert
|
|
if (monat2 >2 || (monat2 == 2 && tag2>=28))
|
|
{
|
|
Schalttag += 1;
|
|
};
|
|
};
|
|
//falls die Differenz im selben Jahr bestimmt werden soll sowie die Jahre Schaltjahre sind, wir ein Tag wieder abgezogen
|
|
if (Schaltjahr(jahr2) && Schaltjahr(jahr1) && jahr1==jahr2)
|
|
{
|
|
Schalttag -= 1;
|
|
};
|
|
}
|
|
//prueft auf ungueltige Eingaben
|
|
//keine Zahl, ungueltige Daten wie 30.02 oder 29.02.2006
|
|
function Nutzereingabe()
|
|
{
|
|
if (
|
|
tag1 <= 0 ||
|
|
tag2 <= 0 ||
|
|
monat1 <= 0 ||
|
|
monat2 <= 0 ||
|
|
jahr1 == 0 ||
|
|
jahr2 == 0 ||
|
|
tag1 > 31 ||
|
|
tag2 > 31 ||
|
|
monat1 > 12 ||
|
|
monat2 > 12 ||
|
|
isNaN(tag1) ||
|
|
isNaN(tag2) ||
|
|
isNaN(monat1) ||
|
|
isNaN(monat2) ||
|
|
isNaN(jahr1) ||
|
|
isNaN(jahr2) ||
|
|
(tag1 >29 && monat1 == 2) ||
|
|
(tag2 >29 && monat2 == 2) ||
|
|
(tag1 >28 && monat1 == 2 && (Schaltjahr(jahr1)==false)) ||
|
|
(tag2 >28 && monat2 == 2 && (Schaltjahr(jahr2)==false)))
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
};
|
|
};
|
|
function Differenz()
|
|
{
|
|
//Auslesen der Felder und speichern als Zahl
|
|
tag1 = parseInt(document.Zeitrechner.Tag1.value);
|
|
tag2 = parseInt(document.Zeitrechner.Tag2.value);
|
|
monat1 = parseInt(document.Zeitrechner.Monat1.value);
|
|
monat2 = parseInt(document.Zeitrechner.Monat2.value);
|
|
jahr1 = parseInt(document.Zeitrechner.Jahr1.value);
|
|
jahr2 = parseInt(document.Zeitrechner.Jahr2.value);
|
|
//pruefen der Eingabe
|
|
if (Nutzereingabe())
|
|
{
|
|
var Jahre = 0;
|
|
|
|
Jahre = (jahr2-jahr1);
|
|
Schalttage();
|
|
|
|
if (Jahre >1)
|
|
{
|
|
//fuer jedes Schaltjahr, was zwischen den zwei Daten liegt, wird ein Schalttag addiert
|
|
for (i = jahr1; i==jahr2; i++)
|
|
{
|
|
if (Schaltjahr(i))
|
|
{Schalttag++};
|
|
};
|
|
};
|
|
//Schalttage + Tagesanzahl*Jahresanzahl - vergangene Tage + Tage des angebrochen Jahres
|
|
Ergebnis = (Schalttag+Jahre*365-AnzahlTage(tag1,monat1)+AnzahlTage(tag2,monat2));
|
|
//Beim Verdreher der Daten wird der Wert negativ, Differenz ist jedoch immer positiv
|
|
if (Ergebnis <0)
|
|
{
|
|
Ergebnis = Ergebnis*-1;
|
|
};
|
|
|
|
document.Zeitrechner.Ergebnis.value = Ergebnis;
|
|
|
|
//Errechnen der Zeit in Jahren
|
|
var temporaer,temporaer2;
|
|
temporaer = (Ergebnis-(Ergebnis % 365))/365;
|
|
temporaer2 = (Ergebnis % 365);
|
|
document.Zeitrechner.Ergebnis2.value = temporaer+' Jahr(e) '+temporaer2+' Tag(e)';
|
|
}
|
|
else
|
|
{
|
|
document.Zeitrechner.Ergebnis.value = 'Falsche Eingabe';
|
|
document.Zeitrechner.Ergebnis2.value = 'Falsche Eingabe';
|
|
}
|
|
};
|
|
|
|
//-->
|
|
</script>
|
|
</head>
|
|
|
|
<body onload="Datumsetzen ()">
|
|
|
|
<p>Zeitspannenrechner</p>
|
|
<form name="Zeitrechner" action="">
|
|
|
|
<table style="width: 100%">
|
|
<tr>
|
|
<td> </td>
|
|
<td>Tag</td>
|
|
<td>Monat</td>
|
|
<td>Jahr</td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Datum 1</td>
|
|
<td>
|
|
|
|
<input name="Tag1" type="text" value="1"/>
|
|
</td>
|
|
<td><input name="Monat1" type="text" value="1"/> </td>
|
|
<td><input name="Jahr1" type="text" value="2006"/> </td>
|
|
<td> </td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td>Datum 2</td>
|
|
<td><input name="Tag2" type="text"/> </td>
|
|
<td><input name="Monat2" type="text"/> </td>
|
|
<td><input name="Jahr2" type="text"/> </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>Zeitdifferenz</td>
|
|
|
|
<td> </td>
|
|
<td><input name="Ergebnis" type="text" readonly="readonly" /></td>
|
|
<td><input name="Button" type="button" value="Berechnen" onclick="Differenz ()" /></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>In Jahren</td>
|
|
<td> </td>
|
|
|
|
<td><input name="Ergebnis2" type="text" readonly="readonly" /></td>
|
|
<td> </td>
|
|
<td> </td>
|
|
</tr>
|
|
</table>
|
|
</form>
|
|
</body>
|
|
|
|
</html>
|
|
``` |