Skip to content

Instantly share code, notes, and snippets.

@w-A-L-L-e
Last active May 30, 2022 14:16
Show Gist options
  • Save w-A-L-L-e/6792735b01f2320c4bcedd3141c13a28 to your computer and use it in GitHub Desktop.
Save w-A-L-L-e/6792735b01f2320c4bcedd3141c13a28 to your computer and use it in GitHub Desktop.
Feestdagen België en Nederland in python
from datetime import datetime, date, timedelta, timezone
EASTER_JULIAN = 1
EASTER_ORTHODOX = 2
EASTER_WESTERN = 3
def easter(year, method=EASTER_WESTERN):
if not (1 <= method <= 3):
raise ValueError("invalid method")
y = year
g = y % 19
e = 0
if method < 3:
# Old method
i = (19*g + 15) % 30
j = (y + y//4 + i) % 7
if method == 2:
# Extra dates to convert Julian to Gregorian date
e = 10
if y > 1600:
e = e + y//100 - 16 - (y//100 - 16)//4
else:
# New method
c = y//100
h = (c - c//4 - (8*c + 13)//25 + 19*g + 15) % 30
i = h - (h//28)*(1 - (h//28)*(29//(h + 1))*((21 - g)//11))
j = (y + y//4 + i + 2 - c + c//4) % 7
# p can be from -6 to 56 corresponding to dates 22 March to 23 May
# (later dates apply to method 2, although 23 May never actually occurs)
p = i - j + e
d = 1 + (p + 27 + (p + 6)//40) % 31
m = 3 + (p + 26)//30
return date(int(y), int(m), int(d))
def belgische_feestdagen(jaar):
pasen = easter(jaar)
feest_dagen = {}
feest_dagen[ date(jaar,1,1) ] = 'Nieuwjaar'
feest_dagen[ pasen ] = 'Pasen'
feest_dagen[ pasen + timedelta(days=1)] = 'Paasmaandag'
feest_dagen[ date(jaar,5,1) ] = 'Feest van de arbeid'
feest_dagen[ pasen + timedelta(days=39)] = 'O.L.H. Hemelvaart'
feest_dagen[ pasen + timedelta(days=49)] = 'Pinksteren'
feest_dagen[ pasen + timedelta(days=50)] = 'Pinkstermaandag'
feest_dagen[ date(jaar,7,21) ] = 'Nationale feestdag'
feest_dagen[ date(jaar,11,1) ] = 'Allerheiligen'
feest_dagen[ date(jaar,11,11) ] = 'Wapenstilstand'
feest_dagen[ date(jaar,12,25) ] = 'Kerstmis'
return feest_dagen
def nederlandse_feestdagen(jaar):
pasen = easter(jaar)
feest_dagen = {}
feest_dagen[ date(jaar,1,1) ] = 'Nieuwjaar'
feest_dagen[ pasen - timedelta(days=2)] = 'Goede vrijdag'
feest_dagen[ pasen ] = 'Pasen'
feest_dagen[ pasen + timedelta(days=1)] = 'Paasmaandag'
koningsdag = date(jaar, 4, 27)
# als koningsdag op zondag, 1 dag ervoor
if koningsdag.weekday() == 6:
koningsdag -= timedelta(days=1)
feest_dagen[koningsdag] = 'Koningsdag'
feest_dagen[ date(jaar,5,5) ] = 'Bevrijdingsdag'
feest_dagen[ pasen + timedelta(days=39)] = 'O.L.H. Hemelvaart'
feest_dagen[ pasen + timedelta(days=49)] = 'Pinksteren'
feest_dagen[ pasen + timedelta(days=50)] = 'Pinkstermaandag'
feest_dagen[ date(jaar,12,25) ] = 'Kerstmis'
feest_dagen[ date(jaar,12,26) ] = 'Tweede kerstdag'
return feest_dagen
def print_feestdagen(year):
print("Belgische feestdagen")
print("====================")
feest_dagen = belgische_feestdagen(year)
for dag in feest_dagen:
print('{:<20}: {}'.format(feest_dagen[dag], dag.isoformat()))
print("\nNederlandse feestdagen")
print("======================")
feest_dagen = nederlandse_feestdagen(year)
for dag in feest_dagen:
print('{:<20}: {}'.format(feest_dagen[dag], dag.isoformat()))
def main():
today = datetime.now()
print_feestdagen(today.year)
if __name__ == '__main__':
main()
@w-A-L-L-e
Copy link
Author

w-A-L-L-e commented May 30, 2022

$ python feestdagen.py

Belgische feestdagen
====================
Nieuwjaar           : 2022-01-01
Pasen               : 2022-04-17
Paasmaandag         : 2022-04-18
Feest van de arbeid : 2022-05-01
O.L.H. Hemelvaart   : 2022-05-26
Pinksteren          : 2022-06-05
Pinkstermaandag     : 2022-06-06
Nationale feestdag  : 2022-07-21
Allerheiligen       : 2022-11-01
Wapenstilstand      : 2022-11-11
Kerstmis            : 2022-12-25

Nederlandse feestdagen
======================
Nieuwjaar           : 2022-01-01
Goede vrijdag       : 2022-04-15
Pasen               : 2022-04-17
Paasmaandag         : 2022-04-18
Koningsdag          : 2022-04-27
Bevrijdingsdag      : 2022-05-05
O.L.H. Hemelvaart   : 2022-05-26
Pinksteren          : 2022-06-05
Pinkstermaandag     : 2022-06-06
Kerstmis            : 2022-12-25
Tweede kerstdag     : 2022-12-26

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment