De wereldkalender (ook wel universele kalender genoemd) is een voorstel om de Gregoriaanse kalender te hervormen tot een kalender waarbij de dagen van de week ieder jaar opnieuw op dezelfde weekdag vallen. Dus ook Kerstmis en Nieuwjaarsdag. Het concept voor deze kalender werd reeds ontwikkeld in 1834 door Marco Mastrofini, maar werd pas honderd jaar later serieus onder de aandacht geplaatst door Elisabeth Achelis die in 1930 de World Calendar Association (WCA) oprichtte. Deze organisatie bepleitte de instelling van deze kalender eerst bij de Volkenbond en later bij de UNO.
De wereldkalender is een betrekkelijk eenvoudige wijziging van de Gregoriaanse kalender van 1582. Een jaar wordt verdeeld in 12 maanden. Elk jaar begint met zondag 1 januari en daarna bestaat er steeds een vaste combinatie van datum en dag in de week. Het jaar is opgedeeld in vier kwartalen. Elk kwartaal heeft 91 dagen. Januari, april, juli en oktober zijn steeds de eerste maand van een kwartaal en de eerste dag daarvan valt steeds op een zondag. Deze maanden hebben 31 dagen, de twee volgende maanden hebben 30 dagen. Op die manier zou een jaar altijd 364 dagen hebben. Om te komen tot een duur van 365 dagen, 5 uren, 48 minuten en 45,1814 seconden (een hele omwenteling van de aarde rond de zon) is er ieder jaar één schrikkeldag nodig en (net als in de Gregoriaanse kalender) om de vier jaar een (tweede) schrikkeldag. Die noodzakelijke, jaarlijkse schrikkeldag is dan 31 december. Dat is dan geen zondag die volgt op zaterdag 30 december, maar over de hele wereld een feestdag die Werelddag wordt genoemd. Daarna volgt zondag 1 januari — het begin van het volgende jaar. In schrikkeljaren wordt in de zomer een extra dag ingelast. Dat is dan 31 juni. De WCA heeft in 2012 sterk gepleit voor de invoering van de Wereldkalender, want toen viel 1 januari ook op een zondag.
Januari |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
Februari |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
Maart |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
April |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
Mei |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
Juni |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
Juli |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
Augustus |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
September |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
Oktober |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
November |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
December |
Zo |
Ma |
Di |
Wo |
Do |
Vr |
Za |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
Het voordeel van deze kalender is de eenvoudige structuur. Het jaar begint altijd met een zondag en elke andere datum valt steeds in dezelfde week. De kwartalen, elk bestaande uit 91 dagen, tellen precies 13 weken. Daardoor zijn statistieken die gebaseerd zijn op cijfers per kwartaal nog beter onderling vergelijkbaar. De jaarlijkse 'schrikkeldag' op 31 december is een feestdag die los staat van een bepaalde religie of wat voor cultureel bepaald verschijnsel dan ook. Het is de dag waarop de aarde aan een nieuw rondje begint. Dit geldt voor iedere aardbewoner. Het is dus een feestdag voor de hele wereldbevolking, een dag die de verbondenheid van de mensheid zou kunnen symboliseren. Verder is er een groot voordeel in landen waar kerstmis wordt gevierd. Eerste en tweede kerstdag vallen nu altijd op vaste dagen: maandag en dinsdag.
Als grootste nadeel wordt gezien het doorbreken van het patroon van de zevendaagse week. Op zaterdag 30 december volgt geen zondag en om de vier jaar volgt op 30 juni geen zondag. Dat betekent een breuk met een traditie van duizenden jaren die werd ingesteld door de Babyoniërs (1800 tot 539 v. Chr.). De instelling van de week van zeven dagen heeft sindsdien alle kalenderhervormingen overleefd. Invoering van deze kalender betekent grote problemen voor het vaststellen van religieuze feesten die gebaseerd zijn op de week van zeven dagen.
Opgave
Schrijf een functie wereldkalender waaraan als argument een volgnummer $$d$$ ($$1 \leq d \leq 366$$) van een dag uit de wereldkalender moet doorgegeven worden. Veronderstel hierbij een jaar in de wereldkalender waarin er zowel een werelddag als een schrikkeldag voorkomen, zodat het jaar in totaal 366 dagen telt. Volgnummers van dagen worden genummerd vanaf 1, zodat volgnummer 1 correspondeert met zondag 1 januari. De functie moet een string teruggeven van de vorm "weekdag dag maand", die de dag uit de wereldkalender beschrijft met het opgegeven volgnummer. Hierbij worden dus ook de speciale weekdagen werelddag en schrikkeldag in beschouwing genomen. De bedoeling van deze opgave is om zo goed mogelijk gebruik te maken van de structuur van de wereldkalender, zodat je de code voor de functie wereldkalender zo beknopt mogelijk kan houden.
Voorbeeld
>>> wereldkalender(1)
'zondag 1 januari'
>>> wereldkalender(32)
'woensdag 1 februari'
>>> wereldkalender(62)
'vrijdag 1 maart'
>>> wereldkalender(92)
'zondag 1 april'
>>> wereldkalender(182)
'zaterdag 30 juni'
>>> wereldkalender(183)
'schrikkeldag 31 juni'
>>> wereldkalender(184)
'zondag 1 juli'
>>> wereldkalender(275)
'zondag 1 oktober'
>>> wereldkalender(333)
'dinsdag 28 november'
>>> wereldkalender(365)
'zaterdag 30 december'
>>> wereldkalender(366)
'werelddag 31 december'