Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Pripravte vstupy . Algoritmus predpokladá , deň , mesiac a rok . Čísla
Zeller je algoritmus mesiacov od troch do 14 rokov , počnúc marci a končí s februárom . To zaručuje , že prestupné dni vždy spadajú na konci roka , čo zjednodušuje výpočty .
- Li mesiac < 3 potom, mesiac = mesiac + 12
2
Vypočítajte storočia a rok storočia . Storočia pre 1950 by malo byť 19 , aj keď patrí do dvadsiateho storočia .
Storočia = floor ( rok /100 ) yearOfCentury = rok mod 100
3
Hľadať deň v týždni , ktorý začal storočia .
denVtýdnu = floor ( storočie /4 ) + 5 * storočia
Zeller , že tento výpočet , modulo sedem , dá deň týždeň , že nejaký daný storočia začal . Výpočet podlaha spracováva skutočnosť , že každý štvrtý storočia je krátky skok dňa .
4
Spočítajte si deň v týždni , ktorý rok začal na .
DenVtýdnu = denVtýdnu + yearOfCentury + poschodie ( yearOfCentury /4 )
Každý rok začína na ďalší deň v týždni , než v predchádzajúcom roku , s výnimkou prestupných rokov . Tento výpočet modulo sedem , udáva deň v týždni prvý deň v roku .
5
Nájdite deň v týždni , mesiac začal na .
DenVtýdnu = denVtýdnu + podlaha ( ( mesiac + 1 ) * 26 ) /10 )
Toto je srdce Zeller algoritmu . Zeller poznamenal , že tento výpočet je schopný určiť , ktorý deň v týždni začne za mesiac . To eliminuje potrebu vyhľadávacích tabuliek na určenie dĺžky každého mesiaca .
6
Pridajte deň v mesiaci , a vypočítať deň v týždni , na ktorý dátum spadá .
DenVtýdnu = denVtýdnu + daydayOfWeek = denVtýdnu mod 7
7
Previesť dátum podľa ISO dátum týždeň noriem .
ISO dátum deň v týždni - of - týždne začať s pondelkom = 1. Zeller algoritmus používa Sobota = 0. Prevod používa jednoduché aritmetiky modulo .
DenVtýdnu = ( ( denVtýdnu + 5 ) mod 7 ) + 1