Periodisch wiederkehrende Datums-Ereignisse berechnen, das geht recht einfach mit JavaScript. Grundsätzlich kann man zu einem Zeitwert Tage, Stunden usw. hinzuzählen, wenn man die entsprechenden Regeln beachtet.
Datum berechnen - Zeitspanne (Tage) addieren / subtrahieren
Dieser Funktion kann man beim Aufruf die Anzahl der Tage übergeben, die zum augenblicklichen DatumsZeitwert hinzugerechnet werden sollen. Die Funktion gibt das berechnete Datum als Wert zurück.
Notierung im Head-Bereich
<script type="text/javascript" language="JavaScript">
<!--
var DatumZukunft;
function HeutePlusTage(AnzahlTage) {
var MsProTag = 86400000;
var DatumZeitJetzt = new Date();
DatumZukunft = DatumZeitJetzt.getTime() + AnzahlTage * MsProTag;
return DatumZukunft;
}
//-->
</script>
1) Datumsinformationen werden im Objekt Date() bereitgehalten
2) Start des Zählvorgangs war am 01.01.1970, 0:00:00 Uhr UTC
3) UTC steht für 'Coordinated Universal Time ' (Deutschland = UTC + 1 Stunde)
4) Gezählt wird in Millisekunden seit dem Start
Im Objekt Date() stehen also Datums- und Zeitinformationen bereit, die man mit sehr vielen unterschiedlichen Funktionen auslesen kann. Schreibt man eine Kopie von Date() in eine Variable, kann man den Inhalt (Wert) der Variablen auch bearbeiten.
Für dieses Beispiel wichtig: Auch den augenblicklichen Zeitwert in Millisekunden (gezählt seit 01.01.1970) kann man auslesen.
Das Objekt Date() 'gehört' dem System! Deshalb lassen wir auch die Finger davon und versuchen es nicht zu beeinflussen / zu ändern. Auslesen ist OK. Will man auf ein Datumsobjekt Einfluss nehmen, muss man schon eine eigene Kopie herstellen. Diese Kopie gehört uns! Damit dürfen wir arbeiten.
Aktuell (beim Öffnen der Seite) zur Verfügung stehende Datumsinformationen:
Datumsinfo von Date() beim Öffnen dieser Seite:
Verstrichene Zeit seit 01.01.1970 beim Öffnen dieser Seite:
(Millisekunden)
Diese Informationen wurden ihrem Systemdatum entnommen.
Zeit hinzu addieren
Möchte man zum heutigen Datum 14 Tage hinzuzählen, werden einfach 14 Tage zur der seit dem 01.01.1970 verstrichenen Zeit ( Millisekunden) hinzugezählt. Weil man bei dieser Berechnung mit Millisekunden arbeitet, muss die Zeitspanne von 14 Tagen umgerechnet werden. Also rechnet man
Das ergibt dann
ms, die in 14 Tagen seit dem 01.01.1970 verstrichenen sein werden.
Das Ergebnis kann man nun wieder bearbeiten und unterschiedlich darstellen:
Zum heutigen Datum 14 Tage hinzuzählen
Aufgabenstellung: Zum heutigen Datum 14 Tage hinzu addieren.
DVD heute ausgeliehen (Heute), Rückgabe spätestens in 14 Tagen: wann?
DVD heute ausgeliehen (), Rückgabe spätestens in 14 Tagen:
Für die Berechnung mit vollen Tageswerten kann man eine Konstante definieren:
'MsProTag' = 86400000 (Millisekunden / Tag).
Die Konstante errechnet sich aus: 24 * 60 * 60 * 1000 .
1 Beispiel
Bei dieser Berechnung wird die Anzahl der Tage der Variablen 'AnzahlTage' zugeordnet. Zum augenblicklichen DatumsZeitwert wird die Anzahl der Tage hinzugerechnet. das Ergebnis wird in die Variable 'DatumZukunft' geschrieben.
<script type="text/javascript" language="JavaScript">
<!--
var AnzahlTage = 14;
var MsProTag = 86400000;
var DatumZeitJetzt = new Date();
var DatumZukunft = DatumZeitJetzt.getTime() + AnzahlTage * MsProTag;
//-->
</script>
2 Beispiel
Dieser Funktion kann man beim Aufruf die Anzahl der Tage übergeben, die zum augenblicklichen DatumsZeitwert hinzugerechnet werden sollen. Die Funktion schreibt das berechnete Datum in in der vor Ort üblichen Schreibweise in die HTML-Seite. (siehe Beispiel 5)
<script type="text/javascript" language="JavaScript">
<!--
function HeutePlusTage(AnzahlTage) {
var MsProTag = 86400000;
var DatumZeitJetzt = new Date();
var DatumZukunft = DatumZeitJetzt.getTime() + AnzahlTage * MsProTag;
document.write( DatumZukunft.toLocaleString() );
}
//-->
</script>
3 Beispiel
Dieser Funktion kann man beim Aufruf die Anzahl der Tage übergeben, die zum augenblicklichen DatumsZeitwert hinzugerechnet werden sollen. Die Funktion gibt das berechnete Datum als Wert zurück.
Notierung im Head-Bereich
<script type="text/javascript" language="JavaScript">
<!--
var DatumZukunft;
function HeutePlusTage(AnzahlTage) {
var MsProTag = 86400000;
var DatumZeitJetzt = new Date();
DatumZukunft = DatumZeitJetzt.getTime() + AnzahlTage * MsProTag;
return DatumZukunft;
}
//-->
</script>
Das wars schon! Wenn sie wollen, kann ich hier die JetztMilliSec-Variable herausnehmen und stattdessen die Funktion Zeit.getTime() an Ort und Stelle einsetzen.
4) Der Variablen Zeit wird der neue Wert zugewiesen
Zeit.setTime(SpeaterMilliSec);
Das wars schon! Wenn ich zum gleichen Resultat wie in Weg A kommen möchte, kann ich als Beweis die einzelnen Elemente in die jetzige Berechnungsformel einsetzen.