Een gemeenschappelijke algoritme voor het berekenen van de dag van de week van een bepaalde datum is Zeller 's algoritme . Het algoritme werd gepubliceerd in 1882 en ontworpen om te worden bewerkt met de hand , maar kan eenvoudig in software worden geïmplementeerd . Zeller 's algoritme werkt door het vinden van de dag van de week de eeuw begonnen , dan is het bouwen van daar door het toevoegen van jaren , maanden en dagen . Een goed begrip van modulo rekenen is noodzakelijk om te begrijpen hoe het algoritme werkt , maar iedereen kan het uitvoeren door de instructies . Instructies 1 Bereid de ingangen . Het algoritme verwacht een dag , maand en jaar . Algoritme nummers Zeller 's de maanden van drie tot 14 , te beginnen met maart en eindigend met februari . Dit garandeert dat de sprong dagen vallen altijd aan het eind van het jaar , het vereenvoudigen van berekeningen . Als maand < 3 dan , maand = maand + 12 2 Bereken de eeuw en de jaar van de eeuw . De eeuw voor 1950 moet zijn 19 , ook al valt het in de twintigste eeuw . Eeuw = verdieping ( jaar /100 ) yearOfCentury = jaar mod 100 3 zoeken de dag van de week waarop de eeuw begon . dayOfWeek = verdieping ( eeuw /4 ) + 5 * eeuw Zeller bepaald dat deze berekening , modulo zeven , zal de dag van het geven week dat elk eeuw begonnen . De berekening vloer behandelt het feit dat elke vierde eeuw is kort een schrikkeldag . 4 Bereken de dag van de week die het jaar begon op . DayOfWeek = dayOfWeek + yearOfCentury + vloer ( yearOfCentury /4 ) op Twitter Elk jaar begint op de volgende dag van de week dan in het voorgaande jaar , behalve voor schrikkeljaren . Deze berekening , modulo zeven , geeft de dag van de week van de eerste dag van het jaar . 5 Vind de dag van de week dat de maand begon op . DayOfWeek = dayOfWeek + vloer ( ( maand + 1 ) * 26 ) /10 ) op p Dit is het hart van Zeller 's algoritme . Zeller opgemerkt dat deze berekening in staat is om te bepalen op welke dag van de week een maand zal beginnen . Het elimineert de noodzaak van lookup tabellen om de lengte van elke maand te bepalen . 6 Voeg de dag van de maand en het berekenen van de dag van de week waarop de datum valt . DayOfWeek = dayOfWeek + daydayOfWeek = dayOfWeek mod 7 7 Zet de datum op ISO week actuele normen . ISO week datum dag - van - weken beginnen met maandag = 1 . Zeller 's algoritme gebruikt zaterdag = 0 . De conversie maakt gebruik van eenvoudige modulo rekenen. DayOfWeek = ( ( dayOfWeek + 5 ) mod 7 ) + 1
|