Guten Morgen,
ich möchte mir den Aschermittwoch berechnen, ein Teil eines Programmes. Nur blöderweise habe ich einen Denkfehler (denke ich mal).
Also, was ich zur Zeit habe:
-
Es wird überprüft, ob das Jahr ein Schaltjahr ist, so wie hier unten jetzt textlich dargestellt wird:
Jahr Modulo 400 = 0 //Schaltjahr
Jahr Modulo 4 = 0 //Schaltjahr
Jahr Modulo 100 = 0 //Kein Schaltjahr
Alle anderen Jahre sind keine Schaltjahre
-
Ostersonntag wird nach der Gaußsche Osterformel berechnet (hier erspar ich euch die Rechnung, aber man findet die Formel bei Wikipedia und benutze diese genau so im Programm).
-
Nun weiß man, dass Aschermittwoch 46 Tage vor Ostersonntag ist. Also geht mein Gedanke so weiter:
Ostersonntag (z.b. 27.03.2016) - 46 Tage
Nun hab ich es so gemacht, dass -46 + 27 gerechnet wird und derMonat um eins vermindert wird, sodass - 19 herauskommt und schlussendlich 29 (Februar hat 28 Tage, wegen Schaltjahr) - 19 gerechnet wird und das Ergebnis herauskommt, wann Aschermittwoch ist, in diesem Fall: 10.02.2016
-
So weit, so gut. Hier dachte ich, dass ich es geschafft habe. Bei der Überprüfung aber, ob dies wirklich funktioniert kam heraus, dass z.B. für das Jahr 2032 (auch Schaltjahr) Aschermittwoch am 12.02.2032 sei, obwohl es laut dem Internet am 11.02.2032 sei. (1 Tag Unterschied). Beim Jahr 2036 (auch Schaltjahr) kam bei mir 28.02.2036 heraus, laut Internet ist es aber am 27.02.2036 (wieder 1 Tag Unterschied). Für das Jahr 2041 z.B. kommt bei mir 06.03.2041 heraus, laut Internet ist dies korrekt!
Nun ist meine Frage, wieso das so ist? Ist irgend etwas falsch an meiner Denkweise, oder hab ich etwas vergessen in der Rechnung, oder sonst irgend etwas? Ich persönlich kann es mir halt nicht erklären, dass nur das Schaltjahr ab einem bestimmten Jahr nicht mehr funktioniert. Kann mir hier wer helfen?
Danke schon mal im Vorraus!
Mit freundlichen Grüßen Shinba8