{"id":24221574,"url":"https://github.com/michdo93/arbeitstageberechner","last_synced_at":"2026-07-17T14:37:57.392Z","repository":{"id":230045993,"uuid":"778297011","full_name":"Michdo93/ArbeitstageBerechner","owner":"Michdo93","description":"Ein Python-Skript, welches die Anzahl der Arbeitstage in einem gegebenen Zeitraum berechnet.","archived":false,"fork":false,"pushed_at":"2024-03-27T14:20:33.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T06:19:39.420Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Michdo93.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-03-27T13:09:23.000Z","updated_at":"2024-03-27T14:11:09.000Z","dependencies_parsed_at":"2024-03-27T15:31:22.101Z","dependency_job_id":"3cb2cc24-78a4-4c87-8725-adb4bff19881","html_url":"https://github.com/Michdo93/ArbeitstageBerechner","commit_stats":null,"previous_names":["michdo93/arbeitstageberechner"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Michdo93%2FArbeitstageBerechner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Michdo93%2FArbeitstageBerechner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Michdo93%2FArbeitstageBerechner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Michdo93%2FArbeitstageBerechner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Michdo93","download_url":"https://codeload.github.com/Michdo93/ArbeitstageBerechner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241763748,"owners_count":20016162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-14T06:19:22.763Z","updated_at":"2025-10-23T19:48:32.224Z","avatar_url":"https://github.com/Michdo93.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ArbeitstageBerechner\nEin Python-Skript, welches die Anzahl der Arbeitstage in einem gegebenen Zeitraum berechnet.\n\nIm nachfolgenden wird das Wort Feiertag für gesetzliche Feiertage verwendet. An diesen ist selbstveständlich kein Arbeitstag. Diese Feiertage variieren je nach Bundesland, aber auch nach einzelnen Gemeinden innerhalb von Bundesländern.\n\n- Standardmäßig würde die Berechnung den `01.01.` bis zum `31.12.` des aktuellen Jahrs berechnen. Man kann aber sowohl das Jahr, als auch den Zeitraum innerhalb dieses Jahres beliebig ändern.\n- Gibt man kein Bundesland an, werden alle gemeinsamen Feiertage abgezogen. Ansonsten hat man die Möglichkeiten entsprechende Parameter für das Bundesland anzugeben.\n- In Bayern hat Augsburg zum Beispiel mehr Feiertage, man kann also einen Parameter angeben, ob man die Arbeitstage aus Augsburg will.\n- In Bayern und im Saarland gibt es in streng katholischen Gemeinden den zusätzlichen Feiertag Mariä Himmelfahrt. Auch dies lässt sich per Parameter angeben.\n- In Baden-Württemberg, Bayern, Hessen, Nordrhein-Westfalen, Rheinland-Pfalz und Saarland ist Fronleichnam automatisch auch ein Feiertag. In Sachsen und in Thüringen nur in manchen Gemeinden. In den restlichen Bundesländern ist Fronleichnam kein Feiertag.\n- Standardmäßig sind die Urlaubstage auch `0`. Dies heißt, dass man von dem jeweiligen Bundesland (oder auch von Deutschland) alle Arbeitstage erhält. Dieser Parameter lässt sich jedoch anpassen.\n\n## Wozu kann das Programm verwendet werden?\n\nDas Programm kann verwendet werden, um\n\n- in einem Zeitraum alle Arbeitstage zu bestimmen.\n- die Arbeitstage verschiedener Bundesländer zu vergleichen.\n- die Feiertage eines Bundeslands sich anzeigen zu lassen.\n- die Arbeitstage abzüglich der Urlaubstage zu bestimmen.\n- z.B. für die Steuererklärung zu berechnen, wie viele Arbeitstage man hatte.\n- z.B. zum Berechnen wie viel man in einem Monat gearbeitet hat, falls es Unstimmigkeiten beim Arbeitszeitnachweis geben sollte.\n- z.B. in einem erweiterten Use-Case zu berechnen, wie viele Fahrkilometer man zum Arbeitgeber hat unter der Voraussetzung, dass der Arbeitsweg immer gleich ist. Weiß man, wie viele Tage man arbeiten war und wie viele Kilometer die Strecke zum Arbeitgeber hat, kann man dies einfach multiplizieren. Nimmt man nun ein Mittelwert, was man an Benzin bzw. Diesel verbraucht hat und einen Mittelwert für den Benzin- bzw. Dieselpreis, kann man auch ermitteln, wie hoch die Tankkosten waren. Diese Summe könnte man zum Beispiel mit dem, was die Steuererklärung für die Fahrkostenpauschale beanschlagt vergleichen (wer längere Strecken zum Arbeitgeber pendelt, der wird merken, dass er weniger erstattet bekommt, als er tankt und wer kürzere Strecken vielleicht auch mit einem niedrigeren Verbrauch fährt, der macht hingegen Gewinn).\n\n## Verwendung\n\nDu kannst das Programm wie folgt ausführen:\n\n```\npython arbeitstage_berechner.py\n```\n\n## Individuelle Anpassungen:\n\nDies ist das Standard-Beispiel, um für jedes Bundesland und für Deutschland die Arbeitstage zu ermitteln:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner()\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Baden-Württemberg\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Baden-Würrtemberg:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n    \n    berechner = ArbeitstageBerechner(bundesland=\"Berlin\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Berlin:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Brandenburg\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Brandenburg:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bremen\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bremen:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Hamburg\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Hamburg:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Hessen\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Hessen:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Mecklenburg-Vorpommern\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Mecklenburg-Vorpommern:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Niedersachsen\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Niedersachsen:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Nordrhein-Westfalen\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Nordrhein-Westfalen:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Rheinland-Pfalz\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Rheinland-Pfalz:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Saarland\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Saarland:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Sachsen\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Sachsen:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Sachsen-Anhalt\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Sachsen-Anhalt:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Schleswig-Holstein\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Schleswig-Holstein:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Thüringen\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Thüringen:\", arbeitstage)\n```\n\nIm Jahr 2024 ergibt sich damit:\n\n```\nArbeitstage: 253\nArbeitstage Baden-Würrtemberg: 251\nArbeitstage Bayern: 251\nArbeitstage Berlin: 252\nArbeitstage Brandenburg: 252\nArbeitstage Bremen: 252\nArbeitstage Hamburg: 252\nArbeitstage Hessen: 252\nArbeitstage Mecklenburg-Vorpommern: 251\nArbeitstage Niedersachsen: 252\nArbeitstage Nordrhein-Westfalen: 251\nArbeitstage Rheinland-Pfalz: 251\nArbeitstage Saarland: 250\nArbeitstage Sachsen: 251\nArbeitstage Sachsen-Anhalt: 252\nArbeitstage Schleswig-Holstein: 252\nArbeitstage Thüringen: 251\n```\n\nAlle Bundesländer haben 9 gemeinsame Feiertage! Jedoch variiert dies je nach Bundesland und Gemeinde.\n\nFür jedes Bundesland und für jedes Jahr müssen einzelne Objektinstanzen initiiert werden!\n\n### Anpassen des Jahres:\n\nZum Beispiel für das Jahr `2025`:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner(jahr=2025)\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage:\", arbeitstage)\n```\n\nIm Konstruktor muss die Jahreszahl geändert werden. Wenn kein Parameter angegeben ist, wird die aktuelle Jahreszahl verwendet. Der Standardparameter ist:\n\n```\njahr=datetime.datetime.now().year\n```\n\nDies bedeutet, dass vom aktuellen System wo das Python-Skript ausgeführt wird, die Jahreszahl generiert wird.\n\nDie Jahreszahl muss im Konstruktor angelegt sein, weil sonst die Berechnung von Feiertagen wie Ostern nicht möglich ist. Dies verschiebt sich jährlich. Entsprechend gibt es noch Feiertage in Abhängigkeit zu Ostern, die sich ebenfalls verschieben. Der Buß- und Bettag ist immer der Mittwoch vor dem 23. November und ist nur in Sachsen ein gesetztlicher Feiertag. Auch hierfür wird eine Jahreszahl benötigt, um das genaue Datum zu ermitteln.\n\n### Anpassen des Zeitraums innerhalb des Jahres:\n\nZum Beispiel vom `01. März` bis zum `31. März`:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner(jahr=2025)\n    arbeitstage = berechner.berechne_arbeitstage(1, 3, 31, 3)\n    print(\"Arbeitstage:\", arbeitstage)\n```\n\nWie man sieht, muss hier in der `berechne_arbeitstage`-Methode der Zeitraum innerhalb des Jahres gesetzt werden.\n\nOder auch:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner(jahr=2025)\n    arbeitstage = berechner.berechne_arbeitstage(start_tag=1, start_monat=3, end_tag=31, end_monat=3)\n    print(\"Arbeitstage:\", arbeitstage)\n```\n\nSollte kein Parameter gesetzt werden, wird automatisch der `01.01` bis zum `31.12.` genommen. Die Standardparameter lauten:\n\n```\nstart_tag=1, start_monat=1, end_tag=31, end_monat=12\n```\n\n### Anpassen des Bundeslandes:\n\nIm Standardbeispiele sieht man bereits, dass mit `bundesland=\u003cDein Bundesland\u003e` dann im Konstruktor das Bundesland gewählt werden kann.\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner()\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Baden-Württemberg\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Baden-Würrtemberg:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n```\n\nAnstelle von `\"Baden-Württemberg\"` oder `\"Bayern\"` kann man auch die bundeslandüblichen Kürzel `\"BW\"` und `\"BY\"` verwenden. Dies gilt auch für alle anderen Bundesländer.\n\n### Abfrage des Bundeslandes\n\nDu kannst z.B. folgendes machen, um abzufragen, welches Bundesland in der Objektinstanz hinterlegt ist:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner(bundesland=\"Baden-Württemberg\")\n    print(\"Bundesland:\", berechner.bundesland)\n\n    berechner = ArbeitstageBerechner(bundesland=\"BW\")\n    print(\"Bundesland:\", berechner.bundesland)\n```\n\nDu erhältst:\n\n```\nBundesland: Baden-Württemberg\nBundesland: Baden-Württemberg\n```\n\nAlso ein Kürzel gibt immer am Ende auch den ganzen Namen des Bundeslands zurück.\n\n### Abfrage der Feiertage (eines Bundeslands):\n\nDu kannst z.B. folgendes machen, um abzufragen, welche Feiertage in der Objektinstanz hinterlegt ist:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner(bundesland=\"Baden-Württemberg\")\n    print(\"Feiertage Baden-Württemberg:\", berechner.feiertage)\n```\n\nMan erhält:\n\n```\nFeiertage Baden-Württemberg: {'Neujahr': datetime.date(2024, 1, 1), 'Karfreitag': datetime.date(2024, 3, 29), 'Ostermontag': datetime.date(2024, 4, 1), 'Tag der Arbeit': datetime.date(2024, 5, 1), 'Christi Himmelfahrt': datetime.date(2024, 5, 9), 'Pfingstmontag': datetime.date(2024, 5, 20), 'Tag der Deutschen Einheit': datetime.date(2024, 10, 3), '1. Weihnachtstag': datetime.date(2024, 12, 25), '2. Weihnachtstag': datetime.date(2024, 12, 26), 'Heilige Drei Könige': datetime.date(2024, 1, 6), 'Fronleichnam': datetime.date(2024, 5, 30), 'Allerheiligen': datetime.date(2024, 11, 1)}\n```\n\nWenn man alle gemeinsamen Feiertage will, dann lässt man die Angabe eines Bundeslands einfach weg:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner()\n    print(\"Feiertage:\", berechner.feiertage)\n```\n\nMan erhält:\n\n```\nFeiertage: {'Neujahr': datetime.date(2024, 1, 1), 'Karfreitag': datetime.date(2024, 3, 29), 'Ostermontag': datetime.date(2024, 4, 1), 'Tag der Arbeit': datetime.date(2024, 5, 1), 'Christi Himmelfahrt': datetime.date(2024, 5, 9), 'Pfingstmontag': datetime.date(2024, 5, 20), 'Tag der Deutschen Einheit': datetime.date(2024, 10, 3), '1. Weihnachtstag': datetime.date(2024, 12, 25), '2. Weihnachtstag': datetime.date(2024, 12, 26)}\n```\n\n### Abfrage alle Bundesländer und derer Kürzel:\n\nDu kannst z.B. folgendes machen, um alle Bundesländer inkl. ihrer Kürzel abzufragen:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner()\n    print(\"Bundesländer:\", berechner.bundeslaender)\n```\n\nMan erhält:\n\n```\nBundesländer: {'Baden-Württemberg': 'BW', 'Bayern': 'BY', 'Berlin': 'BE', 'Brandenburg': 'BB', 'Bremen': 'HB', 'Hamburg': 'HH', 'Hessen': 'HE', 'Mecklenburg-Vorpommern': 'MV', 'Niedersachsen': 'NI', 'Nordrhein-Westfalen': 'NW', 'Rheinland-Pfalz': 'RP', 'Saarland': 'SL', 'Sachsen': 'SN', 'Sachsen-Anhalt': 'ST', 'Schleswig-Holstein': 'SH', 'Thüringen': 'TH'}\n```\n\n### Anpassen der Urlaubstage\n\nEs wird vom Bundesland bzw. von Deutschland ausgegangen und nicht von einer Person. Im Konstruktor kann man aber ebenfalls seine Urlaubstage angeben und dann weiß man, wie viel man wirklich gearbeitet hat. Hier wird jedoch nicht unterschieden, ob diese betriebsbedingt waren, ob Überstunden abgefeiert wurden usw. Es muss nicht so präzise erfasst werden, wie beim Arbeitgeber. Daher reicht der Parameter `urlaubstage` für dieses Programm aus. Ein Beispiel sieht, wie folgt aus:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner(urlaubstage=30, bundesland=\"Baden-Württemberg\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Baden-Würrtemberg:\", arbeitstage)\n```\n\nMan erhält für das Jahr 2024 demnach:\n\n```\nArbeitstage Baden-Würrtemberg: 221\n```\n\nWie wir vorhin bereits gesehen haben, wäre das Jahr 2024 mit 251 Arbeitstagen in Baden-Württemberg. Zieht man davon dann 30 Urlaubstage ab, kommt man auf 221 Tage. Es ist eine einfache Subtraktion. An Feiertagen kann man nämlich keinen Urlaub nehmen!\n\n### Weitere Parameter am Beispiel Bayern:\n\nEs gibt folgende Standardparameter:\n\n```\naugsburg=False, maria_himmelfahrt=False, fronleichnam=False\n```\n\nIn Bayern kann man all diese setzen:\n\n```\nif __name__ == \"__main__\":\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\")\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\", augsburg=True)\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\", augsburg=True, maria_himmelfahrt=True)\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\", augsburg=True, maria_himmelfahrt=True, fronleichnam=True)\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\", augsburg=False)\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\", augsburg=False, maria_himmelfahrt=True)\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n\n    berechner = ArbeitstageBerechner(bundesland=\"Bayern\", augsburg=False, maria_himmelfahrt=True, fronleichnam=True)\n    arbeitstage = berechner.berechne_arbeitstage()\n    print(\"Arbeitstage Bayern:\", arbeitstage)\n```\n\nMan erhält:\n\n```\nArbeitstage Bayern: 251\nArbeitstage Bayern: 249\nArbeitstage Bayern: 249\nArbeitstage Bayern: 249\nArbeitstage Bayern: 251\nArbeitstage Bayern: 250\nArbeitstage Bayern: 250\n```\n\nNicht nur in Bayern ist quasi drinnen, dass wenn diese Parameter entsprechend gesetzt werden, dass da nichts fälschlicherweise als Feiertag angsehen wird oder übersehen wird. In Augsburg ist nicht nur das Augsburger Friedensfest ein fester gesetzlicher Feiertag, sondern auch Fronleichnam. Würde ich den Parameter `fronleichnam` nicht auf `True` setzen, wird zwar zunächst der Standardparameter `fronleichnam=False` verwendet. Aber weil ja `augsburg=True` ist, wird dann `fronleichnam` auch `True`. Der Parameter `augsburg` wird von allen Bundesländern außer von Bayern ignoriert. In Bundesländern wie Baden-Württemberg usw. (oben bereits erläutert), ist Fronleichnam ebenfalls ein Feiertag, sodass hier ebenfalls der Parameter auf `True` gesetzt wird.\n\nAch, um es abzukürzen, der Konstruktor ist so geschrieben, dass kein Feiertag je nach Bundesland übersehen werden kann. Nur in manchen Bundesländern müssen zusätzliche Parameter zu Mariä Himmelfahrt und Fronleichnam gesetzt werden. Diese werden aber nur in den Bundesländern berücksichtigt, in denen diese optional wirklich je nach Gemeinde Feiertage sein können!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichdo93%2Farbeitstageberechner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichdo93%2Farbeitstageberechner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichdo93%2Farbeitstageberechner/lists"}