gedankensplitter/zeitrechner-js-html.md
2022-08-02 21:06:29 +02:00

5.2 KiB

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>&nbsp;</td>
		<td>Tag</td>
		<td>Monat</td>
		<td>Jahr</td>
		<td>&nbsp;</td>
	</tr>

	<tr>
		<td>Datum 1</td>
		<td>

			<input name="Tag1" type="text" value="1"/>
		&nbsp;</td>
		<td><input name="Monat1" type="text" value="1"/>&nbsp;</td>
		<td><input name="Jahr1" type="text" value="2006"/>&nbsp;</td>
		<td>&nbsp;</td>

	</tr>
	<tr>
		<td>Datum 2</td>
		<td><input name="Tag2" type="text"/>&nbsp;</td>
		<td><input name="Monat2" type="text"/>&nbsp;</td>
		<td><input name="Jahr2" type="text"/>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>

	<tr>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>Zeitdifferenz</td>

		<td>&nbsp;</td>
		<td><input name="Ergebnis" type="text" readonly="readonly" /></td>
		<td><input name="Button" type="button" value="Berechnen" onclick="Differenz ()" /></td>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>In Jahren</td>
		<td>&nbsp;</td>

		<td><input name="Ergebnis2" type="text" readonly="readonly" /></td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
</table>
</form>
</body>

</html>