Als ich noch in BASIC programmierte gab es eine einfache Formel, die die ganzzahligen Werte von Jahr/4 - Jahr/100 +Jahr/400 addierte und so die Schalttage ermittelte. Es wurden die Tage seit einem fiktiven "Tag Null" gezählt nach der Formel Tag + Vormonatstage + Jahr*365+ INT(Jahr/4)- INT(Jahr/100)+ INT(Jahr/400) Damals war der Operator mod noch nicht in BASIC verfügbar, nur der Datentyp des ganzzahligen Werts integer (abgekürzt INT); der ganzzahlige Wert wurde mit dem Operanden INT(x/m) errechnet, der Divisionsrest wurde nach der Formel (n/m-INT(n/m))*m errechnet und wegen der damaligen Rechenungenauigkeit beim Dividieren (Abschneiden nach der achten Nachkommastelle) dann auf den ganzzahligen Wert gerundet. Vormonatstage waren die Anzahl Tage der Vormonate. Deren einmal errechneten Zahlenwerte wurden zu einer Zeichenkette verkettet. "000031059090120151181212243273304334". Das erste Zeichen war als Stelle Null definiert. Vom Programm waren ab Stelle n 3 Zeichen zu extrahieren und zu einem Zahlenwert umzuwandeln. n= (Monat-1)*3 16.05.2018 --> 16 + 120 + 2018*365 +504 -20 +5 = 737195 Die Differenz zwischen zwei Datumsangaben ist die Differenz der berechneten Tage. Wurden die Tage eines Datums durch 7 dividiert, so ergab der Rest den Wochentag. Rest Null = Samstag. Der Wochentag als Text wurde ebenfalls aus einer Zeichenkette "Samstag###Sonntag###Montag####Dienstag##Mittwoch##DonnerstagFreitag####" extrahiert. n= Restwert*10, Extraktion von 10 Zeichen ab der n-ten Stelle; Hier ist zur Übersichtlichkeit statt eines Leerzeichens das Zeichen "#" verwendet. Im Programm wurde beispielsweise "Mittwoch " ausgegeben. So ähnlich rechnen auch alle Tabellenkalkulationsprogramme. Die Formel berücksichtigt natürlich nicht die Kalenderreformen und eingeschobene Tage, sie ist daher nur für die Zeit nach der Kalenderreform gültig. -- 01:55, 16. Mai 2018 (CEST)