Menu ≡
kalendar.beda.cz

Jak jednoduše zjistit den v týdnu pro dané datum

Existuje více způsobů, ale ani jeden není zcela ideální. Na internetu lze použít naši kalendářní kalkulačku, jinak to lze udělat za pomoci zdejšího věčného kalendáře, je však nutné mít sebou list papíru s tabulkou. Znalci si mohou dokonce vytvořit vlastní věčný kalendář. Anebo použijte zdejší univerzální roční kalendář. Pokud to však chceme zjistit zpaměti, situace se komplikuje. Jeden z nejjednodušších způsobů, který však pracuje pouze pro roky 2000 až 2099, je tento:

leden6
únor2
březen2
duben5
květen0
červen3
červenec5
srpen1
září4
říjen6
listopad2
prosinec4
Jde o tabulku začátku jednotlivých měsíců v roce, pokud nepřestupný rok začíná sobotou (=6), únor začíná v úterý (=2), zrovna tak březen (=2) a tak dále. Příklad pro 13. leden 2012:

Ideální, lehce zapamatovatelný, univerzální způsob neexistuje. Existuje však jednoduchá pomůcka: poslední únor, 4. 4., 6. 6., 8. 8., 10. 10., 12. 12., 9. 5., 5. 9., 11. 7. a 7. 11. jsou vždy ve stejný den týdne v jakémkoli roce, ať přestupném či nepřestupném. Rozdíl ve dnech mezi těmito dny je totiž vždy dělitelný sedmi.

Jednoduchý algoritmus, funkční pro kalendářní data od 15. 10. 1582 do 31. 12. 9999, v programovacím jazyce Python:
#!/usr/bin/python
# -*- coding: utf8 -*-

"""
Vypocet dne tydne dle 
https://en.wikipedia.org/wiki/Calculating_the_day_of_the_week#Sakamoto.27s_Method
"""

def denTydne(d, m, r):
    t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]
    nazevDne = ["neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota"]
    if m < 3: r -= 1
    return nazevDne[(r + r/4 - r/100 + r/400 + t[m-1] + d) % 7]
    
den = input("Zadejte den : ")
mesic = input("Zadejte měsíc : ")
rok = input("Zadejte rok : ")

print "%s %d.%d.%d" % (denTydne(den, mesic, rok), den, mesic, rok)

Další informace:

Nahoru