Wie man den Tag der Woche für jedes Jahr berechnen . Der Algorithmus wurde 1882 veröffentlicht und entwickelt, um von Hand bearbeitet werden , sondern kann einfach in Software implementiert werden. Zeller -Algorithmus funktioniert, indem das Finden der Tag der Woche das Jahrhundert begonnen , dann den Aufbau von dort durch Zugabe von Jahren, Monaten und Tagen . Ein gutes Verständnis der Modulo-Arithmetik ist notwendig zu verstehen , wie der Algorithmus funktioniert, aber jeder kann es , indem Sie die Anweisungen umzusetzen. Anleitung
1
Bereiten Sie die Eingaben . Der Algorithmus erwartet ein Tag, Monat und Jahr.
Zeller -Algorithmus Zahlen die Monate von drei bis 14, beginnend mit März und endet mit Februar . Dies garantiert, dass Sprung Tagen fallen immer am Ende des Jahres , die Vereinfachung der Berechnungen.
Wenn Monat <3 dann , month = Monat + 12
2
berechnen das Jahrhundert und die Jahr des Jahrhunderts. Das Jahrhundert für 1950 sollten 19 sein , obwohl es im zwanzigsten Jahrhundert fällt .
Jahrhundert = floor (Jahr /100) = Jahr mod yearOfCentury 100
3
finden der Tag der Woche, an dem das Jahrhundert begonnen.
dayOfWeek = floor ( Jahrhundert /4) + 5 * Jahrhundert
Zeller festgestellt, dass diese Berechnung modulo sieben , wird der Tag der geben Woche , dass eine bestimmte Jahrhunderts begonnen. Der Boden Berechnung übernimmt die Tatsache, dass jeder vierte Jahrhundert kurze Schalttag ist .
4
Berechnen Sie den Tag der Woche , dass das Jahr auf gestartet.
DayOfWeek = dayOfWeek + + yearOfCentury Stock ( yearOfCentury /4)
Jedes Jahr beginnt am nächsten Tag in der Woche als im Vorjahr , außer in Schaltjahren. Diese Berechnung , Modulo sieben , gibt den Tag der Woche der erste Tag des Jahres .
5
Finden Sie den Tag der Woche , dass der Monat auf gestartet.
DayOfWeek = dayOfWeek + floor (( Monat + 1) * 26) /10)
Dies ist das Herz der Zeller -Algorithmus . Zeller beobachtet , dass diese Berechnung der Lage zu bestimmen , an welchem Tag der Woche ein Monat beginnen. Es entfällt die Notwendigkeit für Lookup-Tabellen , um die Länge eines jeden Monats zu ermitteln.
6
Fügen Sie den Tag des Monats und berechnen Sie den Tag der Woche, an dem das Datum fällt .
DayOfWeek = dayOfWeek + daydayOfWeek = dayOfWeek mod 7
7
Konvertieren Sie das Datum auf ISO Woche aktuellen Normen .
ISO Woche tage -of- Wochen beginnen mit Montag = 1 . Zeller -Algorithmus verwendet Samstag = 0 . Die Umwandlung verwendet einfache Modulo-Arithmetik .
DayOfWeek = (( dayOfWeek + 5) mod 7 ) + 1