Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako vypočítať deň v týždni pre každý rok

spoločný algoritmus pre výpočet dňa v týždni z určitého dáta je Zeller algoritmus . Algoritmus bol publikovaný v roku 1882 a navrhnutý tak , aby pracoval v ruke , ale môže byť ľahko implementovaný v softvéri . Zeller je algoritmus pracuje podľa zistení deň v týždni storočia začal , potom stavebné odtiaľ pridaním roky, mesiace a dni . Dobrú znalosť aritmetiky modulo je nutné pochopiť , ako algoritmus funguje, ale niekto ho realizovať podľa pokynov . Pokyny dovolená 1

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

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené