Feiertage is a Go/Golang library for calculating German and Austrian bank holidays. It includes the calculation of the date of Easter and, more importantly, offers ways to retrieve public holidays for a state of Germany or Austria (=Bundesland).

The library is probably useful only for people implementing use cases with special requirements inside of Austria or Germany, such as shift schedules or capacity calculation.

Feiertage covers the following special dates:

     
Neujahr Epiphanias HeiligeDreiKönige
Valentinstag InternationalerTagDesGedenkensAnDieOpferDesHolocaust Josefitag
Weiberfastnacht Karnevalssonntag Rosenmontag
Fastnacht Aschermittwoch InternationalerFrauentag
Palmsonntag Gründonnerstag Karfreitag
Ostern BeginnSommerzeit Ostermontag
Walpurgisnacht TagDerArbeit TagDerBefreiung
Staatsfeiertag InternationalerTagDerPressefreiheit Florianitag
Muttertag ChristiHimmelfahrt Vatertag
Pfingsten Pfingstmontag Dreifaltigkeitssonntag
Fronleichnam TagDesMeeres MariäHimmelfahrt
Rupertitag InternationalerKindertag Weltflüchtlingstag
TagDerDeutschenEinheit TagDerVolksabstimmung Nationalfeiertag
Erntedankfest Reformationstag Halloween
BeginnWinterzeit Allerheiligen Allerseelen
Martinstag Karnevalsbeginn Leopolditag
Weltkindertag BußUndBettag Thanksgiving
Blackfriday Volkstrauertag Nikolaus
MariäUnbefleckteEmpfängnis MariäEmpfängnis Totensonntag
ErsterAdvent ZweiterAdvent DritterAdvent
VierterAdvent Heiligabend Weihnachten
Christtag Stefanitag ZweiterWeihnachtsfeiertag
Silvester    

Feiertage covers the public holidays defined for these states (Bundesländer):

     
BadenWürttemberg Bayern Berlin
Brandenburg Bremen Hamburg
Hessen MecklenburgVorpommern Niedersachsen
NordrheinWestfalen RheinlandPfalz Saarland
Sachsen SachsenAnhalt SchleswigHolstein
Thüringen Deutschland Burgenland
Kärnten Niederösterreich Oberösterreich
Salzburg Steiermark Tirol
Vorarlberg Wien Österreich
All    

Examples:

fmt.Println(Ostern(2016))
--> 27.03.2016 Ostern


    fmt.Println(BußUndBettag(2016))
    --> 16.11.2016 Buß- und Bettag



fmt.Println(Brandenburg(2016))
--> Brandenburg (BB)
    01.01.2016 Neujahr
    25.03.2016 Karfreitag
    27.03.2016 Ostern
    28.03.2016 Ostermontag
    01.05.2016 Tag der Arbeit
    05.05.2016 Christi Himmelfahrt
    15.05.2016 Pfingsten
    16.05.2016 Pfingstmontag
    03.10.2016 Tag der deutschen Einheit
    31.10.2016 Reformationstag
    25.12.2016 Weihnachten
    26.12.2016 Zweiter Weihnachtsfeiertag

Command line tool

A little command line tool is included as well. It can be compiled using make buildcmd or go build cmd/feiertage/feiertage.go This will create an executable feiertage.

See https://github.com/wlbr/feiertage/releases/latest for downloads.

$ feiertage -region baden-württemberg 2021
-->
Baden-Württemberg (BW)
  01.01.2021 Neujahr
  06.01.2021 Epiphanias
  02.04.2021 Karfreitag
  05.04.2021 Ostermontag
  01.05.2021 Tag der Arbeit
  13.05.2021 Christi Himmelfahrt
  24.05.2021 Pfingstmontag
  03.06.2021 Fronleichnam
  03.10.2021 Tag der deutschen Einheit
  01.11.2021 Allerheiligen
  25.12.2021 Weihnachten
  26.12.2021 Zweiter Weihnachtsfeiertag




Just for my old collegues: the commandline tool can generate Taskjuggler code instead of plain text. See below:

$ feiertage -region bw -asTasjugglerCode 2021
-->
# public holidays for Baden-Württemberg (BW),
 leaves holiday "Neujahr" 2021-01-01,
 leaves holiday "Epiphanias" 2021-01-06,
 leaves holiday "Karfreitag" 2021-04-02,
 leaves holiday "Ostermontag" 2021-04-05,
 leaves holiday "Tag der Arbeit" 2021-05-01,
 leaves holiday "Christi Himmelfahrt" 2021-05-13,
 leaves holiday "Pfingstmontag" 2021-05-24,
 leaves holiday "Fronleichnam" 2021-06-03,
 leaves holiday "Tag der deutschen Einheit" 2021-10-03,
 leaves holiday "Allerheiligen" 2021-11-01,
 leaves holiday "Weihnachten" 2021-12-25,
 leaves holiday "Zweiter Weihnachtsfeiertag" 2021-12-26

See https://github.com/wlbr/feiertage for details.