Eeuwigdurende kalender

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

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. Het eerste volle jaar van onze jaartelling (ook wel gregoriaanse kalender genaamd) was 1583, zoekopdrachten voor een datum die valt voor 1583 zijn niet betrouwbaar.

Geschiedenis[bewerken]

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.

Bepaling met behulp van zondagsletters[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 deze Zondagsletters tabel. 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]

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]

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.

Voorbeeld[bewerken]

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.

Hulptabel[bewerken]

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]

Schrikkeljaarbepaling[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.

De formules[bewerken]

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 bepaalt vanaf UK02 (incl) tot aan WJ (excl)
hoeveel jaren er zijn
UK03 = WJ - UK02
4 bepaalt vanaf UK02 (incl) tot aan WJ (excl)
hoeveel dagen er zijn (excl. schrikkeldagen)
UK04 = UK03 * 365
5 bepaalt vanaf UK02 (incl) tot aan WJ (excl)
hoeveel schrikkeldagen er zijn (excl. eeuwgetallen)
UK05 = GEHEEL((UK03 + 3) / 4)
6 bepaalt vanaf UK02 (incl) tot aan WJ (excl)
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 in REEKS(1, 2)
    • DAN UK08 = 0
    • ANDERS UK08 = UK01
9 bepaalt het aantal dagen vanaf 1 januari van het jaar met de waarde uit UK02 tot aan de wensdatum UK09 = WD + UK04 + UK05 - UK06 + UK07 + UK08 - 1
10 bepaalt de weekdag van de wensdatum UK10 = WEEKDAG[MODULUS(UK09 + 5, 7) + 1]

Legenda variabelen[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[ 7]=181
VOORBIJ[2]=31  VOORBIJ[ 8]=212
VOORBIJ[3]=59  VOORBIJ[ 9]=243
VOORBIJ[4]=90  VOORBIJ[10]=273
VOORBIJ[5]=120 VOORBIJ[11]=304
VOORBIJ[6]=151 VOORBIJ[12]=334

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

WEEKDAG[1]=Maandag   WEEKDAG[5]=Vrijdag
WEEKDAG[2]=Dinsdag   WEEKDAG[6]=Zaterdag
WEEKDAG[3]=Woensdag  WEEKDAG[7]=Zondag
WEEKDAG[4]=Donderdag

Legenda functies[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
REEKS Geef een oplopende reeks vanaf de 1e t/m de 2e waarde. Voorbeelden:
  • REEKS(1, 2) = 1 en 2
  • REEKS(4, 8) = 4, 5, 6, 7 en 8

Externe link[bewerken]