Jak obliczyć dzień tygodnia każdego roku

Krok 1

Przygotuj informacje. Aby przeprowadzić algorytm, należy podać dzień, miesiąc i rok. Podaje miesiące od trzech do czternastu, zaczyna się od marca, a kończy w lutym. Gwarantuje to, że dni przestępne zawsze spadną pod koniec roku, co upraszcza obliczenia: jeśli miesiąc <3 wtedy, miesiąc = miesiąc + 12.

Krok 2

Oblicz wiek i rok. Lata pięćdziesiąte muszą mieć 19 lat, pomimo faktu, że liczba ta uznaje XX wiek: wiek = podstawa (rok / 100) = rokSiglo = rok mod 100.

Krok 3

Znajdź dzień tygodnia, w którym rozpoczął się wiek: Dzień tygodnia = podstawa (wiek / 4) + 5 * wiek. Zeller stwierdził, że obliczenia z modułu siódmego podadzą dzień tygodnia, w którym zaczął się wiek. Obliczenia bazowe uwzględniają fakt, że co cztery stulecia nie ma dnia przestępnego.

Krok 4

Oblicz dzień tygodnia, w którym rozpoczął się rok: daySweden = weekdayDay + yearSiglover + base (yearSiglo / 4). Z wyjątkiem lat przestępnych, każdego roku należy rozpocząć następny dzień tygodnia, który rozpoczął się w poprzednim roku. Obliczenie modułu 7 daje dzień tygodnia pierwszego dnia roku.

Krok 5

Znajdź dzień tygodnia, w którym rozpoczął się miesiąc: weekday = weekday + podstawa ((miesiąc + 1) * 26) / 10). To jest serce algorytmu Zellera, który zauważył, że to obliczenie jest w stanie określić, w którym dniu tygodnia zacznie się miesiąc. Dzięki tej formule eliminowana jest potrzeba tabel wyszukiwania do określenia długości każdego miesiąca.

Krok 6

Dodaj dzień miesiąca i oblicz dzień tygodnia, w którym data się kończy: weekday = weekday + dayday = weekdayday mod 7.

Krok 7

Konwertuj datę na standardy Międzynarodowej Organizacji Normalizacyjnej: datę tygodnia; dzień tygodnia rozpoczyna się od poniedziałku = 1. Z algorytmem Zellera stosowana jest sobota = 0. Do konwersji używana jest prosta arytmetyka modularna: weekDay = ((weekday + 5) mod 7) + 1.