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.