• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

bewegliche Feiertage für die Konsole abfragen

tiny

Newbie
Hi,

normal gibt es ja unter Linux jede mögliche Anwendung als Konsolenversion, egal wie sinnfrei das ist. Kann ich auch Feiertag auslesen um sie in shellscripten verwursten zu können? Hier geht es natürlich um die beweglichen wie Ostern, Pfingsten sowie B+B-Tag.

Ostern könnte man zwar ausrechnen, aber den ersten Vollmond im Frühjahr abzufragen wird noch schwieriger.
 

marce

Guru
Ein bisserl Ansatz dürftest Du hier finden:
https://www.linuxforen.de/forums/showthread.php?281608-komplexe-Berechnungen-(Gau%DFsche-Osterformel)
 

abgdf

Guru
Also, hier sind die bis 2029:

https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland#Bewegliche_Feiertage

Am einfachsten dürfte es sein, die von da in das Skript in ein Array rüberzukopieren.
Und 2029 die Seite nochmal aufrufen, wenn wir dann noch leben und gesund sind.
 

abgdf

Guru
Aber ohne Gewähr. Bitte nochmal überprüfen. Benutzung auf eigene Gefahr:
Code:
#!/usr/bin/perl

use warnings;
use strict;

my $sep = "  ";
my $s = "Gründonnerstag  09.04.  01.04.  14.04.  06.04.  28.03.  17.04.  02.04.  25.03.  13.04.  29.03.
Karfreitag  10.04.  02.04.  15.04.  07.04.  29.03.  18.04.  03.04.  26.03.  14.04.  30.03.
Ostersonntag  12.04.  04.04.  17.04.  09.04.  31.03.  20.04.  05.04.  28.03.  16.04.  01.04.
Ostermontag  13.04.  05.04.  18.04.  10.04.  01.04.  21.04.  06.04.  29.03.  17.04.  02.04.
Christi Himmelfahrt  21.05.  13.05.  26.05.  18.05.  09.05.  29.05.  14.05.  06.05.  25.05.  10.05.
Pfingstsonntag  31.05.  23.05.  05.06.  28.05.  19.05.  08.06.  24.05.  16.05.  04.06.  20.05.
Pfingstmontag  01.06.  24.05.  06.06.  29.05.  20.05.  09.06.  25.05.  17.05.  05.06.  21.05.
Fronleichnam  11.06.  03.06.  16.06.  08.06.  30.05.  19.06.  04.06.  27.05.  15.06.  31.05.
Buß- und Bettag  18.11.  17.11.  16.11.  22.11.  20.11.  19.11.  18.11.  17.11.  22.11.  21.11";

sub getFeiertag {
    my $name = shift;
    my $year = shift;
    my @a = split(/\n/, $s);
    my @b;
    my ($i, $n, $d);
    for $i (@a) {
        @b = split(/$sep/, $i);
        $n = shift(@b);
        if ($n eq $name) {
            return $b[$year - 2020];
        }
    }
}

print getFeiertag("Christi Himmelfahrt", 2029);
print "\n";
print getFeiertag("Fronleichnam", 2025);
print "\n";
;)
 
Oben