Eeuwigdurende kalender

Een eeuwigdurende kalender (Latijn: calendarium perpetuum) is een tabel of verzameling tabellen waarmee men in ieder geval de weekdag kan bestemmen van alle data binnen een bepaald kalendersysteem. Het primaire doel is om te allen tijde te kunnen bepalen op welke weekdag een bepaalde datum viel in het verleden of in de toekomst.

Vanaf de Middeleeuwen tot ongeveer de jaren dertig van de twintigste eeuw waren kalenders zo kostbaar dat veel mensen slechts wilden investeren in een eeuwigdurende kalender. Kalenders bleven geruime tijd na de uitvinding van de boekdrukkunst duur, omdat het zetten van tabellen hoge eisen stelt aan de expertise van de drukker. Van zo’n kalender verwachtte men in de eerste plaats overzicht. De eeuwigdurende kalenders die tegenwoordig in agenda’s worden afgedrukt zijn functioneel in het bestemmen van een enkele datum in het verre verleden of de verre toekomst, maar voor het alledaagse gebruik zijn ze minder geschikt. Overigens zijn deze pas uitgevonden in het begin van de twintigste eeuw.

Een eeuwigdurende kalender die de Gregoriaanse kalender volgt, herhaalt zichzelf elke 400 jaar, aangezien 303 gewone jaren en 97 schrikkeljaren samen optellen tot 146.097 dagen, wat precies 20.871 weken zijn.

Bepaling met behulp van zondagsletters

[bewerken | brontekst bewerken]

De hieronder staande tabel is ‘modern’ in de zin dat de dagen zijn gegeven in rijtjes van zeven, in plaats van een doorlopende lijst per maand. (Vanaf het eind van de 19de eeuw). Zij is ‘traditioneel’ in de zin dat ze gebruikmaakt van de zondagsletters. Om er gebruik van te kunnen maken moet men eerst de zondagsletter van het jaar weten of opzoeken, bijvoorbeeld in een zondagsletterstabel. De zondagsletter geeft aan welke van de zeven letters A tot en met G opgevat dient te worden als een zondag.

Voorbeeld in een gewoon jaar

[bewerken | brontekst bewerken]

Op welke weekdag valt 6 juni 2007 ?

De zondagsletter van 2007 is G. Daarmee zijn alle dagen van 2007 die op een G-regel staan zondagen. Daarmee worden in dat jaar alle A-dagen maandagen, alle B-dagen dinsdagen, en alle C-dagen woensdagen. We zien dat 6 juni op een C-regel staat. Het antwoord is dus woensdag.

Voorbeeld in een schrikkeljaar

[bewerken | brontekst bewerken]

Op welke weekdag valt 28 februari 2008 ?

De zondagsletter van 2008 is FE. Omdat ‘de zondagsletter’ uit twee letters bestaat weten we meteen dat 2008 een schrikkeljaar is — als we dat nog niet wisten. Voor de maanden januari en februari maken we gebruik van de eerste letter, voor alle overige maanden van de tweede letter.

Voor 28 februari maken we dus gebruik van de eerste letter, de F. F staat voor zondag, G voor maandag, A voor dinsdag, B voor woensdag, C voor donderdag. 28 februari staat op een C-regel, het antwoord is dus donderdag.

Op welke weekdag valt 1 maart 2008 ?

Zondagsletter van 2008 is FE, voor maart gebruiken we de tweede letter, de E. De E is een zondag, dan is de voorafgaande dag, de D, een zaterdag.

In 2008 wordt donderdag 28 februari gevolgd door de schrikkeldag vrijdag 29 februari, die gevolgd wordt door zaterdag 1 maart.

In plaats van maximaal drie dagen voor- of achteruit te tellen kan men ook gebruikmaken van de hulptabel, onderaan.

ZL Januari Februari Maart ZL
A 1 8 15 22 29 5 12 19 26 5 12 19 26 A
B 2 9 16 23 30 6 13 20 27 6 13 20 27 B
C 3 10 17 24 31 7 14 21 28 7 14 21 28 C
D 4 11 18 25 1 8 15 22 29 1 8 15 22 29 D
E 5 12 19 26 2 9 16 23 2 9 16 23 30 E
F 6 13 20 27 3 10 17 24 3 10 17 24 31 F
G 7 14 21 28 4 11 18 25 4 11 18 25 G
April Mei Juni
A 2 9 16 23 30 7 14 21 28 4 11 18 25 A
B 3 10 17 24 1 8 15 22 29 5 12 19 26 B
C 4 11 18 25 2 9 16 23 30 6 13 20 27 C
D 5 12 19 26 3 10 17 24 31 7 14 21 28 D
E 6 13 20 27 4 11 18 25 1 8 15 22 29 E
F 7 14 21 28 5 12 19 26 2 9 16 23 30 F
G 1 8 15 22 29 6 13 20 27 3 10 17 24 G
Juli Augustus September
A 2 9 16 23 30 6 13 20 27 3 10 17 24 A
B 3 10 17 24 31 7 14 21 28 4 11 18 25 B
C 4 11 18 25 1 8 15 22 29 5 12 19 26 C
D 5 12 19 26 2 9 16 23 30 6 13 20 27 D
E 6 13 20 27 3 10 17 24 31 7 14 21 28 E
F 7 14 21 28 4 11 18 25 1 8 15 22 29 F
G 1 8 15 22 29 5 12 19 26 2 9 16 23 30 G
Oktober November December
A 1 8 15 22 29 5 12 19 26 3 10 17 24 31 A
B 2 9 16 23 30 6 13 20 27 4 11 18 25 B
C 3 10 17 24 31 7 14 21 28 5 12 19 26 C
D 4 11 18 25 1 8 15 22 29 6 13 20 27 D
E 5 12 19 26 2 9 16 23 30 7 14 21 28 E
F 6 13 20 27 3 10 17 24 1 8 15 22 29 F
G 7 14 21 28 4 11 18 25 2 9 16 23 30 G
Hulptabel
zondag A B C D E F G
maandag B C D E F G A
dinsdag C D E F G A B
woensdag D E F G A B C
donderdag E F G A B C D
vrijdag F G A B C D E
zaterdag G A B C D E F

De constructie van beide tabellen is eenvoudig. Voor de eigenlijke kalender noteert men alle dagen van een gewoon jaar, en nummert deze cyclisch van A tot en met G. Tot slot voegt men de 29ste februari toe. De hulptabel ontstaat door zowel horizontaal als verticaal cyclisch te nummeren van A tot en met G.

Bepaling met behulp van formules

[bewerken | brontekst bewerken]

Schrikkeljaarbepaling

[bewerken | brontekst bewerken]

Het bestaan van schrikkeljaren maakt de juiste bepaling ingewikkelder. Jaartallen die deelbaar zijn door 4 zijn doorgaans een schrikkeljaar, uitzondering hierop zijn de eeuwtallen die deelbaar zijn door 100, maar niet door 400. Voorbeeld: 2004 was een schrikkeljaar, 2000 ook, 1900 niet, 1700 niet, 1600 wel. Bij het vaststellen van onze huidige kalender (anno 1582) wist men al dat 365 dagen in een jaar een tekort van 1 dag in de 4 jaar zou opleveren, op grond hiervan is veel langer geleden al de schrikkeldag ingesteld. Men wist ook dat wanneer dit consequent zou worden toegepast er een overschot van 3 dagen in de 400 jaar zou zijn. Toen ging men rekenen en werd bovengenoemde regel van de eeuwtallen ingesteld.

Onderstaande formules zijn 100% nauwkeurig voor alle data vanaf 1 januari 1583. Ze gaan vergezeld van uitleg en kunnen worden toegepast in rekenkundige omgevingen zoals Excel, JavaScript of PHP. Ze maken gebruik van variabelen, dat zijn locaties voorzien van een naam om gegevens in op te slaan.

Nr Uitleg Formule
1 bepaalt of WJ een schrikkeljaar is
Ja : UK01 = 1
Nee : UK01 = 0
  • ALS MODULUS(WJ, 4) > 0
    • DAN UK01 = 0
    • ANDERS ALS MODULUS(WJ, 100) > 0
      • DAN UK01 = 1
      • ANDERS ALS MODULUS(WJ, 400) > 0
        • DAN UK01 = 0
        • ANDERS UK01 = 1
2 bepaalt het dichtstbijzijnde jaartal in de geschiedenis
dat deelbaar is door 400 (incl. huidig jaartal)
UK02 = GEHEEL(WJ / 400) * 400
3 t/m 6 bepaalt vanaf UK02 (incl) tot aan WJ (excl)
3 hoeveel jaren er zijn UK03 = WJ - UK02
4 hoeveel dagen er zijn (excl. schrikkeldagen) UK04 = UK03 * 365
5 hoeveel schrikkeldagen er zijn (incl. eeuwgetallen) UK05 = GEHEEL((UK03 + 3) / 4)
6 hoeveel niet-schrikkel eeuwgetallen er zijn UK06 = GEHEEL((UK03 - 1) / 100)
7 bepaalt het aantal dagen in de voorbije maanden
van het jaar met de waarde uit WJ (excl. schrikkeldagen)
UK07 = VOORBIJ[WM]
8 bepaalt of in WJ schrikkeldag al voorbij is
Ja : UK08 = 1
Nee : UK08 = 0
  • ALS (WM IS 1 OF WM IS 2)
    • DAN UK08 = 0
    • ANDERS UK08 = UK01
9 bepaalt het aantal dagen vanaf 1 januari van het jaar
met de waarde uit UK02 tot en met de wensdatum
UK09 = UK04 + UK05 - UK06 + UK07 + UK08 + WD
10 bepaalt de weekdag van de wensdatum UK10 = WEEKDAG[MODULUS(UK09 + 4, 7) + 1]

Legenda variabelen

[bewerken | brontekst bewerken]
Variabele Uitleg Waarde
WD Dag van de maand van de wensdatum
WM Maand van de wensdatum (getal)
WJ Jaar van de wensdatum (getal van 4 cijfers)
UKNR Bevat resultaat van een formule,
heeft bij iedere formule een ander volgnummer
VOORBIJ Tabel (array) met dagen van maanden die voorbij zijn
(zie formule 7)

VOORBIJ[1]=0
VOORBIJ[2]=31
VOORBIJ[3]=59
VOORBIJ[4]=90
VOORBIJ[5]=120
VOORBIJ[6]=151

VOORBIJ[7]=181
VOORBIJ[8]=212
VOORBIJ[9]=243
VOORBIJ[10]=273
VOORBIJ[11]=304
VOORBIJ[12]=334

WEEKDAG Tabel (array) met weekdagnamen
(zie formule 10)

WEEKDAG[1]=Maandag
WEEKDAG[2]=Dinsdag
WEEKDAG[3]=Woensdag
WEEKDAG[4]=Donderdag

WEEKDAG[5]=Vrijdag
WEEKDAG[6]=Zaterdag
WEEKDAG[7]=Zondag

Legenda functies

[bewerken | brontekst bewerken]
Functie Uitleg
MODULUS Geeft de restwaarde van een deling als geheel getal. Voorbeelden:
  • MODULUS(13, 7) = 6
  • MODULUS(26, 7) = 5
GEHEEL Geeft de waarde van het getal zonder breukwaarde. Voorbeelden:
  • GEHEEL(13 / 7) = 1
  • GEHEEL(26 / 7) = 3
[bewerken | brontekst bewerken]