[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Nächsten Werktag berechnen



Stefan Baur <newsgroups.mail2@stefanbaur.de> wrote:

> Gibt's da für irgendwo schon was fertiges, möglichst in Perl, Python
> oder Bash? Pluspunkte, wenn es nur Dinge benötigt, die als *.deb
> verfügbar sind.

Ich kenne nichts Fertiges, aber warum schreibst Du Dir das - z.B. für
die bash - nicht selbst?

date kann Tage addieren und Wochentage ausgeben, der Wochentag von
morgen ist z.B.:

   martinkl@maurice:~$ date -d +1day +%a
   Di

Wenn Du wissen willst, ob es ein Feiertag ist, lässt Du Dir das Datum
ausgeben, z.B. so:

   martinkl@maurice:~$ date -d +1day +%F
   2014-07-01

Dann musst Du nur noch nachschauen, ob der 1.7.2014 ein Feiertag ist.
Die festen Feiertage sind ohnehin bekannt, für die beweglichen brauchst
Du die Osterformel, aus ihr leiten sich alle beweglichen Feiertage ab.
Die Formel findest Du im web, es gibt sogar fertigen bash-code:

   <http://debianforum.de/forum/viewtopic.php?f=34&t=144038>

Das Ganze packst Du nun nur noch in eine while-Schleife: Solange der
Tag ein Sa oder So oder ein Feiertag ist, erhöhst Du den Wert für
"day". Zur Veranschaulichung: date soll so lange vorwärts zählen, bis
es auf einen Sonntag trifft:

   martinkl@maurice:~$ i=0 ; while [ $(date -d +"$i"day +%a) != "So" ] ; do (( i++ )) ; echo $i $(date -d +"$i"day +%a) ; done
   1 Di
   2 Mi
   3 Do
   4 Fr
   5 Sa
   6 So

Genauso prüfst Du gegen die Feiertage. Dafür lässt Du Dir z.B. die
Feiertage ebenfalls mit "+%F" ausgeben, also ebenfalls im Format:
Jahr-Monat-Tag, schreibst beides in einen string und kannst ganz
einfach vergleichen.

Der Rest ist nur noch ein bisschen Fleiß- und Schreibarbeit.

Ich habe mir mit date und etwas grep und sed einen ganzen Terminplaner
für die bash geschrieben ;-) Ist nicht der Schnellste, funktioniert
aber ansonsten einwandfrei. Vorallem aber habe ich jetzt endlich die
Funktionen drin, die mir wichtig sind :-)

Gruß, Martin


Reply to: