Menu ≡
kalendar.beda.cz

Jak vypočítat začátek Adventu

Kalendářní data adventních nedělí jsou pohyblivá, protože čtvrtá adventní neděle připadá vždy na neděli před 25. prosincem. Čtvrtá adventní neděle může díky tomu nastat mezi 18. až 24. prosincem, tedy i na Štědrý den. První adventní neděle pak může nastat mezi 27. listopadem až 3. prosincem. Jiná definice hovoří o první adventní neděli jako o té neděli, která je nejbližší 30. listopadu. Tedy pokud je tento den v pondělí, úterý či ve středu, pak je první adventní neděle před tímto dnem, v opačném případě až po tomto dni, či tento den.

Je jasné, že datum první adventní neděle závisí na nedělním písmenu, v případě přestupného roku na tom druhém. Lze sestavit tuto jednoduchou tabulku, která zobrazuje vztah mezi nedělním písmenem a kalendářním datem první adventní neděle:

nedělní
písmeno
datum první
adventní neděle
B,CB27. listopad
C,DC28. listopad
D,ED29. listopad
E,FE30. listopad
F,GF1. prosinec
G,AG2. prosinec
A,BA3. prosinec

Pokud neznáme nedělní písmeno, nezbývá než si vypůjčit vzorec pro výpočet nedělního písmena a upravit jej pro naše potřeby. Všechny výpočty se provádí pouze s celými čísly, tedy například 23 děleno 5 je 4 a celočíselný zbytek po dělení (zde označen operátorem '%') je 3. Algoritmy vrací listopadový den první adventní neděle, přitom například platí 33. listopad = 3. prosinec. Níže je uveden algoritmus výpočtu pro libovolný rok gregoriánského kalendáře:

1.adventní_neděle = 33 - (rok + (rok / 4) + 2 - 3 × (rok / 100 - 15) / 4) % 7

V praxi mnohdy postačí jednodušší algoritmus, který však dává správný výsledek pouze pro rozmezí let 1900 až 2099:

1.adventní_neděle = 33 - (rok + (rok / 4) - 1) % 7

Níže je tabulka která zobrazuje frekvenci rozložení první adventní neděle v průběhu celého 400letého cyklu gregoriánského kalendáře v němž se opakují kalendářní data ve stejném pořadí.

Frekvence rozložení 1. adventní neděle
datum první
adventní neděle
nedělní
písmeno
kolikrát
27. listopadB58×
28. listopadC56×
29. listopadD58×
30. listopadE57×
1. prosinecF57×
2. prosinecG58×
3. prosinecA56×

Často nám konkrétní počítačový jazyk výpočet adventních nedělí pomocí zabudovaných funkcí dosti ulehčí. Například v jazyce PHP lze vypočítat (nejen) první adventní neděli pro zadaný rok například takto:

strtotime("-4 sunday", strtotime("25-12-{$rok}"))

Funkci pro výpočet první adventní neděle v programovacím jazyce Python lze řešit například takto: Nejdříve vypočteme poslední neděli v listopadu, pokud je den v měsíci menší jak 27 je jasné, že adventní neděle je až o týden později v prosinci. Přičteme proto 7 dní a pak zase musíme odečíst počet dnů listopadu a dostaneme prosincové datum první adventní neděle.

import calendar

def getFirstAdventSunday(year):
    month = 11
    day = max(week[6] for week in calendar.monthcalendar(year, month))
    if day < 27:
        day -= 23
        month = 12       
    return(month, day)

print(getFirstAdventSunday(2019))  

Další informace:

Nahoru