feiertage.js – Deutsche Feiertage für node.js und bower (javascript)

By August 17, 2015 Aktuelles 16 Comments

Für ein aktuelles Projekt war es notwendig die Deutschen Feiertage algorithmisch zu berechnen. Dafür ist die ‘Osterformel’ bekannt. Damit diese Entwicklung anderen erspart bleibt, wurde das Paket als npm und bower package feiertage.js  auf github veröffentlicht.

Das Paket ist getestet, in Produktion in aktiver Wartung und hat 100% Test Coverage mit Travis CI. Es ist außerdem kompatibel mit AMD / RequireJS, Node und in allen gängigen Browser.

Und so kann das Paket eingebunden werden:

In der im Mai 2016 erschienenen Version 1.1.0 bringt das Paket ein paar weitere Funktionen mit zum Beispiel:

 

Wenn Sie weitere Wünsche oder Ideen haben, kommentieren Sie gern. Bisher ist mir kein Modul bekannt, dass diese Aufgabe erledigt.

> Github (weitere Dokumentation)

> NPM Paket

 

16 Comments

  • Tim Stopfer sagt:

    Hallo,
    vielen Dank für diese sehr hilfreiche Modul!
    Ich habe allerdings beim Testen festgestellt, dass die Funktion getHolidays() immer um einen Tag daneben liegt.
    Für getHolidays(2016, “BY”) erhalte ich
    [“2015-12-31T23:00:00.000Z”, “2016-01-05T23:00:00.000Z”, “2016-03-24T23:00:00.000Z”, “2016-03-27T22:00:00.000Z”, “2016-04-30T22:00:00.000Z”, “2016-05-04T22:00:00.000Z”, “2016-05-15T22:00:00.000Z”, “2016-05-25T22:00:00.000Z”, “2016-10-02T22:00:00.000Z”, “2016-10-31T23:00:00.000Z”, “2016-12-24T23:00:00.000Z”, “2016-12-25T23:00:00.000Z”]

    Die Feiertage sind jeweils einen Tag zu früh angegeben.

    • Fakir sagt:

      Hallo Tim,
      Danke für das Feedback. Die Ursache für das Problem ist die ausgebene Datumszeit:

      2016-01-05T23:00:00.000Z > ist in unserer Zeitzone (UTC+1/UTC+2) 2016-01-06T00:00:00.000Z

      Das Javascript Date Objekt beinhaltet leider auch immer die Uhrzeit und ist deshalb von Zeitzonen beeinflusst.
      In diesem Paket habe ich mich dafür entschieden, dass es auf Systemen mit Deutscher Uhrzeit passt. Eine Alternative wäre,
      das Datum als String zurückzugeben, dieser “Medienbruch” wäre aber so gegen alle Programmierparadigma.

      Hilft dir das weiter oder hast du einen Vorschlag wie du es gern anders hättest?

      Viele Grüße

      Simon Fakir

  • Gunther sagt:

    Der Syntaxhighlighter scheint bei den Codebeispielen doppelt drüberzulaufen. Zeigt Sachen wie ‘‘ mitten im Javascriptcode…

    • Fakir sagt:

      Hallo Gunther,

      vielen Dank für die Info. Syntaxhighlighter ist angepasst und zusätzlich die Kommentare auf Deutsch übersetzt :)

      Viele Grüße

      Simon

      • Gunther sagt:

        Das ging ja schnell! Vielen Dank!
        Noch eine Sache: Der Feiertag “Mariahimmelfahrt” müsste korrekterweise “Mariä Himmelfahrt” heißen. Also der Lateinische Genitiv für “die Himmelfahrt der Maria”.

        • Fakir sagt:

          Hallo Gunther,
          danke für den Hinweis, da hat jemand ein sehr gutes Auge.
          Ich habe neben dem Tippfehler gleich noch eine Übersetzungsfunktion eingebaut, mit der auch weitere Sprache oder ‘Custom’ Sprachen in der eigenen Übersetzung möglich sind und als Version 1.1.1 veröffentlicht.

          z.B.
          var translation = { NEUJAHRSTAG: “New Years Eve”, … }
          feiertagejs.addTranslation(‘en’, translation);

          Grüße

          Simon

  • Gunther sagt:

    Wenn isHoliday() true ergibt, wie komme ich dann am besten an den Namen des Feiertags? Wäre es nicht praktisch eine Funktion getHoliday(date, code) zu haben, die direkt den Feiertag, oder false zurückgibt?
    LG

  • til sagt:

    Habe das Problem, das Heilige Drei Könige auf den 1.Mai gelegt wird. Ich habe als Bundesland NW gewhält.

    • Fakir sagt:

      Hallo Til,
      danke für das Feedback. Hier war tatsächlich die Übersetzung für Heilige Drei Könige beim ‘Tag der Arbeit’ hinterlegt.

      Wurde nachgebessert und mit Testcase hinterlegt. In der aktuellen Version (v1.1.3) ist das nun korrekt.

      Grüße

      Simon

  • til sagt:

    Für das erste hat es gereicht, Zeile 19 zu löschen.

  • til sagt:

    Im Jahr 2017 wird ausnahmsweise in allen Bundesländern ReformationsTag gefeiert, weil der Martin Luther 500 Jahre alt wird. Könntest du das auch noch berücksichtigen ?

    • Fakir sagt:

      Hallo Til,
      1) Zeile 19 ist aus kommentiert
      2) Interessant mit dem Reformationstag. Habe ich in der aktuellen Version berücksichtigt und mit Unittest ausgestattet.

      Grüße

      Simon

      • til sagt:

        Danke für den schnellen Fix.
        Habe es leider noch nicht testen könnnen, aber beim Durchlesen ist mir aufgefallen, das in den oberen auskommentierten Berreich mit den Licensen immer das Jahr 2015 genannt wird, vor ein paar Version wurde noch das korrekte Jahr (2016) genannt.

  • Florian sagt:

    Vielen Dank für dieses tolle Modul. Ich bin da wirklich von begeistert. Habe mir gleich mal ein A7 Wochenkalender mit den Feiertagen aus meinem Bundesland erzeugt. :-)
    Einen kleinen Fehler habe ich gefunden. Es sollte “Tag der Deutschen Einheit” heißen und nicht “Tag der deutschen Einheit”.

    • Simon Fakir sagt:

      Hallo Florian,

      danke für die Rückmeldung! Freut mich, dass du das Modul verwendest und auch danke für den Input.
      Ich habe gerade die Version 1.2.0 veröffentlicht, die deinen Kommentar berücksichtigt. Da einiges neu programmiert wurde (ES6/Flow & mehr Tests) kann es sein, dass die Version nicht mehr überall kompaitibel ist.

      Mit der Funktion addTranslation könntest du aber auch in der alten Version di Texte ersetzen – falls du da mehr Input brauchst, lass es mich wissen.

      Grüße

      Simon Fakir

Leave a Reply