Одређивање дана у недељи
Постоје различите методе за утврђивање дана у недељи за било који датум у прошлости или будућности. Методе су углавном засноване на алгоритмима за одређивање дана у недељи на основу датума, укључујући и оне који су засновани на табелама које не захтевају било какво израчунавање од стране корисника. Углавном се користи када неко жели да израчуна на који дан је неко рођен или на који дан се одиграо неки битан догађај.
Постоје особе са синдромом саванта које могу у року од неколико секунди или чак неколико десетинки, да кажу име дана у недељи у зависности од датума.
Увод
Да би се дан у недељи одређивао преко нумеричких операција потребно је дане у недељи представити бројевима (углавном од 0 до 6, што је еквивалентно стандардном ISO 8601 представљању бројева где је 1 = Понедељак, 2 = Уторак, итд.). То се постиже математичком операцијом модула по броју 7. Операција модула по броју 7 рачуна остатак при дељењу неког броја бројем 7. Тако се број 7 гледа као 0, број 8 као 1, итд.
Главни приступ којег користе скоро све методе је израчунавање броја протеклих дана од неког референтног датума (нпр. 1. јануар 1800. године је Среда) и затим прерачунавање колико је дана протекло од тог референтног датума и примене операције модула по броју 7 на добијени број, до датума за који се покушава утврдити дан у недељи.
Још један стандардни приступ је да се израчуна који је дан у недељи први дан века коме припада задати датум. Затим се траже подешавања за месеце, израчунава се број преступних година од почетка века, и онда се све то сабере са бројем година од почетка века. ??? На крају се све завршава са бројањем дана од почетка века, на шта се примењује операција модула по броју 7 како би се утврдило који је дан у недељи за тражени датум.
Корисни концепти
Месеци који међусобно одговарају
Месеци који међусобно одговарају су они месеци који почињу истим даном у недељи. На пример, септембар и децембар међусобно одговарају јер је 1. септембар исти дан као и 1. децембар. Месеци међусобно одговарају само ако је број дана између њихових првих дана дељив са 7 или другачије речено, ако су им први дани удаљени неколико целих недеља. На пример, фебруару одговара март јер фебруар има 28 дана, што је дељиво са 7, а то је уједно и тачно 4 недеље удаљено од 1. фебруара.
Код преступних година, јануару и фебруару одговарају различити месеци у односу на обичне године због тога што фебруар има 29 дана.
Месеци који међусобно одговарају:
Непреступне године:
- јануар и октобар
- фебруар, март и новембар
- април и јул
- ниједан месец не одговара августу.
За преступне године:
- јануар, април и јул
- фебруар и август
- март и новембар
- ниједан месец не одговара октобру.
За све године:
- септембар и децембар
- ниједан месец не одговара мају и јуну.
У табели месеца приказаној испод, месеци који међусобно одговарају имају исти број, што је чињеница која произилази из дефиниције.
Године које међусобно одговарају
Година може почети једним од 7 дана, а у случају преступних година дан у недељи се мења у односу на непреступне године након 29. фебруара што даје укупно 14 могућих комбинација које година може имати.
Табеларни метод
Основни метод
Овај метод важи и за Грегоријански и за Јулијански календар.
Формула је:, где су:
- d је дан у месецу,
- m број месеца из табеле месеци,
- g су последње две цифре из броја године, и
- v је број који представља век. За Грегоријанске датуме то је број 6 ако је број састављен од прве две цифре века дељив са 4, а надаље 4-2-0 (2000-6, 2100-4, 2200-2, 2300-0). За Јулијанске датуме број 6 је за 1200, а сваки следећи век је за један мањи док се не дође до 0 када се почиње испочетка (1300-5, 1100-0).
Ако је резултат 0 онда је на тај дан била недеља, ако је резултат 1 онда је био понедељак, итд.
Табела дана
| Датум | d | дан | ||||
|---|---|---|---|---|---|---|
| 01 | 08 | 15 | 22 | 29 | 1 | Понедељак |
| 02 | 09 | 16 | 23 | 30 | 2 | Уторак |
| 03 | 10 | 17 | 24 | 31 | 3 | Среда |
| 04 | 11 | 18 | 25 | 4 | Четвртак | |
| 05 | 12 | 19 | 26 | 5 | Петак | |
| 06 | 13 | 20 | 27 | 6 | Субота | |
| 07 | 14 | 21 | 28 | 0 | Недеља | |
Табела месеци
| Месец | m | Преступна година |
| Јануар | 0 | -1 |
|---|---|---|
| Фебруар | 3 | 2 |
| Март | 3 | |
| Април | 6 | |
| Мај | 1 | |
| Јун | 4 | |
| Јул | 6 | |
| Август | 2 | |
| Септембар | 5 | |
| Октобар | 0 | |
| Новембар | 3 | |
| Децембар | 5 |
Табела година
| Година по модулу 100 | g | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00 | 06 | 17 | 23 | 28 | 34 | 45 | 51 | 56 | 62 | 73 | 79 | 84 | 90 | 0 | ||||
| 01 | 07 | 12 | 18 | 29 | 35 | 40 | 46 | 57 | 63 | 68 | 74 | 85 | 91 | 96 | 1 | |||
| 02 | 13 | 19 | 24 | 30 | 41 | 47 | 52 | 58 | 69 | 75 | 80 | 86 | 97 | 2 | ||||
| 03 | 08 | 14 | 25 | 31 | 36 | 42 | 53 | 59 | 64 | 70 | 81 | 87 | 92 | 98 | 3 | |||
| 09 | 15 | 20 | 26 | 37 | 43 | 48 | 54 | 65 | 71 | 76 | 82 | 93 | 99 | 4 | ||||
| 04 | 10 | 21 | 27 | 32 | 38 | 49 | 55 | 60 | 66 | 77 | 83 | 88 | 94 | 5 | ||||
| 05 | 11 | 16 | 22 | 33 | 39 | 44 | 50 | 61 | 67 | 72 | 78 | 89 | 95 | 6 | ||||
Табела векова
| Грегоријански календар | Јулијански календар | |
|---|---|---|
| Век mod 4 | Век mod 7 | v |
| (1700, 2100) 1 | (1400, 0700) 0 | 4 |
| (1500, 0800) 1 | 3 | |
| (1800, 2200) 2 | (1600, 0900) 2 | 2 |
| (1700, 1000) 3 | 1 | |
| (1900, 2300) 3 | (1800, 1100) 4 | 0 |
| (2000, 2400) 0 | (1200, 0500) 5 | 6 |
| (1300, 0600) 6 | 5 |
Потпуна табела
| Датум | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 08 | 09 | 10 | 11 | 12 | 13 | 14 | ||||||||||
| 15 | 16 | 17 | 18 | 19 | 20 | 21 | ||||||||||
| 22 | 23 | 24 | 25 | 26 | 27 | 28 | ||||||||||
| Месец | 29 | 30 | 31 | Година по модулу 28 | Век по модулу 4 | Век по модулу 7 | ||||||||||
| 4 Шаблон:07 | нед | пон | уто | сре | чет | пет | суб | 01 | 07 | 12 | 18 | 24 | 1600Шаблон:0 2000 | 0 | 0500 Шаблон:01200 | 5 |
| 9 Шаблон:012 | суб | нед | пон | уто | сре | чет | пет | 02 | 08 | 13 | 19 | 24 | 0600 Шаблон:01300 | 6 | ||
| 6 | пет | суб | нед | пон | уто | сре | чет | 03 | 08 | 14 | 20 | 25 | 1700 Шаблон:02100 | 1 | 0700 Шаблон:01400 | 0 |
| 2Шаблон:0 3 Шаблон:011 | чет | пет | суб | нед | пон | уто | сре | 04 | 09 | 15 | 20 | 26 | 0800Шаблон:0 1500 | 1 | ||
| 8 | сре | чет | пет | суб | нед | пон | уто | 04 | 10 | 16 | 21 | 27 | 1800 Шаблон:02200 | 2 | 0900 Шаблон:00200 | 2 |
| 5 | уто | сре | чет | пет | суб | нед | пон | 05 | 11 | 16 | 22 | 00 | 1000Шаблон:0 0300 | 3 | ||
| 1Шаблон:0 10 | пон | уто | сре | чет | пет | суб | нед | 06 | 12 | 17 | 23 | 00 | 1900 Шаблон:02300 | 3 | 1100 Шаблон:00400 | 4 |
Одређивање дана у недељи за датум 1. јануар 2000. године (субота):
- дан у месецу: 1 ~ 31 (1)
- месец: 1 за јануар ~ 12 за децембар (1)
- година: 00 ~ 99 mod 28 и искошено за јануар и фебруару у преступним годинама (00)
- век mod 4 за Грегоријански календар и век mod 7 за Јулијански календат (20 или 0 ~ субота).
За датум по Грегоријанском календару (1. јануар 2000. године - субота)
- дан у месецу: 1
- јануар у табели месеци: 6
- последље две цифре године (подељене са 4): 0
- број века: 6
Резултат је 13, што даје остатак од 6 када се подели са 7, па је 1. јануар 2000. године била субота.
За датум по Јулијанском календару (13. октобар 1307.)
- дан у месецу: 13
- Октобар у табели месеци: 0
- Последње две цифре године подељене са 4: 1
- последње две цифре године: 7
- број века: 5
Резултат је 26, што даје остатак од 5 при дељењу са 7, па је 13. октобар 1307. године био петак.
Гаусов алгоритам
Карл Фридрих Гаус је у својим белешкама астрономских таблица описао методу за израчунавање дана сваког првог јануара било које године.[1] Никада те белешке није објавио, али је то укључено у збирку његових радова која је издата 1927. године.[2]
Гаусова метода је примењива на Грегоријански календар. Дане у недељи је означио бројевима од 0 до 6 почев са недељом. Дефинисао је и следеће операције: Дан у недељи првог јануара у некој години је[1]
где је Шаблон:Math остатак при дељењу Шаблон:Math са Шаблон:Math,[2] или Шаблон:Math mod Шаблон:Math.
Ова формула је претворена у табеларни метод за израчунавање дана у недељи за било који датум које су конструисали Крајчик и Швердтфегер.[2][3]
Формуле изведене из Гаусовог алгоритма
Гаусова формула за први јануар може бити претворена у методу за одређивање дана у недељи за било који дан у недељи.
- За Грегоријански календар
- Нека је A - 1 = година = Y, m = месец - 2 mod 12 (март = 1,..., јануар = -1 mod 12 = 11 и фебруар = 12) и d = дан у месецу. Тада ова формула постаје
- Ако је A - 1 = година = y + 100c, ова формула постаје
- За Јулијански календар
- Белешка: година - 1 за јануар и фебруар.
- За 1. јануар 2000. године, датум се третира као 11 месец 1999. године,
- d = 1
- [2.6 × 11 - 0.2] = 28 mod 7 = 0
- 5R(99,4) = 5 × 3 = 15 mod 7 = 1
- 4R(1999,100) = 4 × 99 mod 7 = 4 × 1 = 4
- 6R(1999,400) = 6 × 399 mod 7 = 6 × 0 = 0
- 3R(99,7) = 3 × 1 = 3
- 5R(19,4) = 5 × 3 mod 7 = 1
- w = 1 + 0 + 1 + 4 + 0 = 1 + 0 + 1 + 3 + 1 = 6 = субота.
- За 31. децембар 2000. године, датум се третира као 10. месец у години,
- d = 31 mod 7 = 3
- [2.6 × 10 - 0.2] = 25 mod 7 = 4
- 5R(00,4) = 5 × 0 = 0
- 4R(2000,100) = 4 × 0 = 0
- 6R(2000,400) = 6 × 0 = 0
- 3R(00,7) = 3 × 0 = 0
- 5R(20,4) = 5 × 0 = 0
- w = 3 + 4 + 0 + 0 + 0 = 3 + 4 + 0 + 0 + 0 = 7 mod 7 = 0 = недеља.
- За 30. април 1977. године, датум се третира као други месец у години,
- d = 30 mod 7 = 2
- [2.6 × 2 - 0.2] = 5
- 5R(77,4) = 5 × 1 = 5
- 4R(1777,100) = 4 × 77 mod 7 = 0
- 6R(1777,400) = 6 × 177 mod 7 = 6 × 2 mod 7 = 5
- 3R(77,7) = 3 × 0 = 0
- 5R(17,4) = 5 × 1 = 5
- w = 2 + 5 + 5 + 0 + 5 = 17 mod 7 = 3 = среда.
- 4. октобар 1582. године се третира као осми месец у години,
- d = 4
- [2.6 × 8 – 2.2] = 4
- 5R(82,4) = 5 × 2 mod 7 = 3
- 3R(1582, 7) = 3 × 0 = 0
- 3R(82,7) = 3 × 5 mod 7 = 1
- 6R(15,7) = 6 × 1 = 6
- w = 4 + 4 + 3 + 0 mod 7 = 4 + 4 + 3 + 1 + 6 mod 7 = 4 = четвртак.
- 1. јануар 0. године (први дан нове ере) се третира као 11. месец претходне године,
- d = 1
- [2.6 × 11 – 2.2] = 5
- 5R(-1,4) = 5 × 3 mod 7 = 1
- 3R(-1,7) = 3 × 6 mod 7 = 4
- 3R(-1,7) = 3 × 6 mod 7 = 4
- 6R(0,7) = 6 × 0 = 0
- w = 1 + 5 + 1 + 4 mod 7 = 1 + 5 + 1 + 4 + 0 mod 7 = 4 = четвртак.
Крајчиков алгоритам
Крајчик је предложио два метода за одређивање дана у недељи. Један је графички метод, а други користи следећу формулу
где јеШаблон:Math дан у недељи (недеља је представљена бројем 1); а Шаблон:Math, Шаблон:Math и Шаблон:Math су бројеви који означавају месец, дан и годину на основу следећих табела:
| Месеци | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| Шаблон:Math | 1 | 4 | 3 | 6 | 1 | 4 | 6 | 2 | 5 | 0 | 3 | 5 |
|---|
За Грегоријански календар,
| [Година/100] mod 4 | 0 | 1 | 2 | 3 |
| Шаблон:Math | 0 | 5 | 3 | 1 |
|---|
За Јулијански календар,
| [Година/100] mod 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| Шаблон:Math | 5 | 4 | 3 | 2 | 1 | 0 | 6 |
|---|
Коначно, број године је узима из следеће табеле:
| Последње две цифре године | y | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00 | 06 | 17 | 23 | 28 | 34 | 45 | 51 | 56 | 62 | 73 | 79 | 84 | 90 | 0 | ||||
| 01 | 07 | 12 | 18 | 29 | 35 | 40 | 46 | 57 | 63 | 68 | 74 | 85 | 91 | 96 | 1 | |||
| 02 | 13 | 19 | 24 | 30 | 41 | 47 | 52 | 58 | 69 | 75 | 80 | 86 | 97 | 2 | ||||
| 03 | 08 | 14 | 25 | 31 | 36 | 42 | 53 | 59 | 64 | 70 | 81 | 87 | 92 | 98 | 3 | |||
| 09 | 15 | 20 | 26 | 37 | 43 | 48 | 54 | 65 | 71 | 76 | 82 | 93 | 99 | 4 | ||||
| 04 | 10 | 21 | 27 | 32 | 38 | 49 | 55 | 60 | 66 | 77 | 83 | 88 | 94 | 5 | ||||
| 05 | 11 | 16 | 22 | 33 | 39 | 44 | 50 | 61 | 67 | 72 | 78 | 89 | 95 | 6 | ||||
Шверфтфегерова варијација
У овој верзији година је подељена на две цифре века и две цифре године. Приступ зависи од месеца. За Шаблон:Math,
па Шаблон:Math је између 0 и 99. За Шаблон:Math,
Формула за одређивање дана у недељи је[2]
где су изабрани позитивни модули.[2]
Вредност броја Шаблон:Math се узима из следеће табеле:
| Шаблон:Math | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| Шаблон:Math | 0 | 3 | 2 | 5 | 0 | 3 | 5 | 1 | 4 | 6 | 2 | 4 |
Вредност за Шаблон:Math се узима из следеће табеле, што ипак зависи од календара. За Грегоријански календар,[2]
| Шаблон:Math | 0 | 1 | 2 | 3 |
| Шаблон:Math | 0 | 5 | 3 | 1 |
|---|
За Јулијански календар,[2]
| Шаблон:Math | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| Шаблон:Math | 5 | 4 | 3 | 2 | 1 | 0 | 6 |
|---|
Друге варијације
Друга варијација горњег алгоритма ради са мање табела. Благи недостатак је необична конвенција за бројање месеци и година. Формула је
где
Y година минус 1 за јануар и фебруар, а година за остале месеце у години y су последње две цифре године c су прве две цифре године d је дан у месецу (1 до 31) m су премештени месеци (март=1,...фебруар=12) w је дан у недељи (0=недеља,..6=субота)
На пример, за 1. јануар 2000. године (година ' 1 за јануар)
Белешка: Први је за године које се завршавају са 00 али су преступне године, а други је за било коју годину која се завршава са 00.
Термин [2.6m - 0.2] mod 7 даје вредност за месец: m
месеци m јануар 0 фебруар 3 март 2 април 5 мај 0 јун 3 јул 5 август 1 септембар 4 октобар 6 новембар 2 децембар 4
Термин y + [y/4] mod 7 даје вредност за године: y
Y mod 28 y 01 07 12 18–1 02 -– 13 19 24 2 03 08 14 –- 25 3 -- 09 15 20 26 4 04 10 –- 21 27 5 05 11 16 22 –- 6 06 -– 17 23 00 0
Термин [c/4] - 2c mod 7 даје вредност за векове: c
C mod 4 c 1 5 2 3 3 1 0 0
Сада је укупна формула: ; 1. јануар 2000. године се може израчунати на следећи начин:
- , d = 1, m = 0, y = 5 (0 - 1 mod 28 = 27), c = 0 (20 mod 4 = 0)
- , d = 1, m = 0, y = 4 (99 mod 28 = 15), c = 1 (20 - 1 mod 4 = 3)
Други математички алгоритми
Зелеров алгоритам
Код Зелеровог алгоритма месеци су означени бројевима од 3 за март до 14 за фебруар. За годину се претпоставља у марту, што значи да да ће на пример јануар 1995. године бити третиран као 13. месец 1994. године.[4]
Формула за Грегоријански календар је
где је
Y година минус 1 за јануар и фебруар, а година за остатак месеци y последње две цифре године c прве две цифре године d дан у месецу (1 до 31) m су премештени месеци (март=1,...фебруар=12) w је дан у недељи (1=недеља,..0=субота)
Једина разлика између Зелеровог алгоритма (З) и Гаусовог алгоритма (Г), је у томе што је З - Г = 1 = недеља.
(март=3 код З, али март=1 код Г)
Вредности за месеце можемо добити из Гаусовог алгоритма једноставно додајући 1:
месец m јануар 1 фебруар 4 март 3 април 6 мај 1 јун 4 јул 6 август 2 септембар 5 октобар 0 новембар 3 децембар 5
Тондерингов алгоритам
Алгоритам Клауса Тондеринга користи конгруенцију слично као код Гаусове методе, премештањем бројева месеци за исти износ, и тиме добијамо иста подешавања за исти месец. Разликује се од остатка Гаусовог алгоритма јер не одваја век од године, делећи у више засебних једначина, од којих је последња иста као она која се користи у Сакамотов методу за одређивање дана у недељи.[5]