Jak vypočítat den v týdnu kteréhokoli roku

Krok 1

Připravte si informace. Pro provedení algoritmu je nutné zadat den, měsíc a rok. Toto uvádí měsíce od tří do čtrnáct, začíná březen a končí v únoru. To zaručuje, že skokové dny vždy klesají na konci roku, což zjednodušuje výpočty: pokud měsíc <3 pak měsíc = měsíc + 12.

Krok 2

Vypočítejte století a rok. Pětatřicátá léta musí být 19 let, a to navzdory skutečnosti, že tento údaj uznává dvacáté století: století = základ (rok / 100) = yearSiglo = rok mod 100.

Krok 3

Najděte den v týdnu, kdy začalo století: Den v týdnu = základ (století / 4) + 5 * století. Zeller rozhodl, že tento výpočet, modulu sedm, dá den v týdnu, ve kterém začalo jakékoliv století. Základem výpočtu je skutečnost, že každých čtyři století neexistuje žádný skokový den.

Krok 4

Vypočítejte den v týdnu, ve kterém začal rok: daySweden = weekdayDay + yearSiglover + base (yearSiglo / 4). S výjimkou letních let, musíte každý rok začít následující den v týdnu, který začal v předchozím roce. Výpočet modulu 7 udává den týdne prvního dne roku.

Krok 5

Najít den v týdnu, kdy začínal měsíc: weekday = weekDay + base ((měsíc + 1) * 26) / 10). Toto je srdce Zellerova algoritmu, který poznamenal, že tento výpočet je schopen určit, na jaký den v týdnu začne měsíc. Pomocí tohoto vzorce je potřeba vyhledávat tabulky pro určení délky každého měsíce.

Krok 6

Přidejte den v měsíci a vypočítat den v týdnu, ve kterém datum klesne: weekday = weekDay + daySunday = weekday mod 7.

Krok 7

Převede datum na normy Mezinárodní organizace pro normalizaci: datum v týdnu; den v týdnu začíná pondělí = 1. S algoritmem Zeller se používá sobota = 0. Pro konverzi je použita jednoduchá modulární aritmetika: weekday = ((Weekday + 5) mod 7) + 1.