Periodisch wiederkehrende Datums-Ereignisse berechnen, das geht recht einfach mit JavaScript. Grundsätzlich kann man zu einem Zeitwert Tage, Stunden usw. hinzuzählen, wenn mann die entsprechenden Regeln beachtet.
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 nun zum heutigen Datum 14 Tage hinzuzählen, werden einfach 14 Tage zur seit dem 01.01.1970 verstrichenen Zeit hinzugezählt. Weil man bei dieser Berechnung mit 'Millisekunden' arbeitet, muss die Zeitspanne jeweils umgerechnet werden. Also rechnet man
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.