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.