weidner/archives/2022/09/

Kalenderwoche

Ich habe immer häufiger Absprachen, bei denen es darum geht, einen Termin in einer bestimmten Kalenderwoche (KW) zu finden oder etwas für eine KW zu planen.

Das Jahr umfasst 52 Kalenderwochen und in der EU gilt davon diejenige als erste, die den ersten Donnerstag im Jahr enthält, also mindesten vier Tage weil die Woche hier am Montag beginnt.

Mein Problem damit: kaum einer meiner Kalender zeigt mir die Kalenderwoche für ein Datum. Manchmal habe ich bereits via Internetsuche einen Webdienst bemüht, weil es schneller ging als die Wochen seit dem ersten Donnerstag durchzuzählen.

Schließlich war ich es leid, und weil ich sowieso fast immer eine Shell offen habe, sah ich mich nach geeigneten Kommandozeilenwerkzeugen um.

Das erste was ich fand, war das ehrwürdige Programm date. Die Version aus den coreutils kennt die Option +%V für die Ausgabeformatierung, welche die Kalenderwoche ausgibt. Kombiniere ich das mit der Option -d "$date", dann kann ich die Kalenderwoche für ein beliebiges Datum herausbekommen.

Mit einer kleinen Shell-Funktion kann ich das so ausbauen, dass ich entweder die KW für das heutige Datum, also diese Woche, oder für ein vorgegebenes Datum bekomme:

,kw () {
  local datum="$*"
  if [ -z "$datum" ]; then
     date +%V
  else
     date +%V -d "$datum"
  fi
}

Damit brauche ich mir keine Gedanken um die Option -d und die Anführungsstriche machen, wenn ich ein Datum vorgeben will.

$ ,kw
35
$ ,kw Oct 15
41

Anders sieht es aus, wenn ich eine Kalenderwoche genannt bekomme und das Datum dafür suche. Hier hilft mir das Programm ncal. Gebe ich diesen die Option -w mit, bekomme ich die KW mit angegeben, ein Alias reicht:

alias ,cal='ncal -w'

Nun gut, im Büro und zu Hause habe ich fast immer eine Shell zur Verfügung. Aber unterwegs?

Da leistet mir Termux treue Dienste, dass mir die Shell auf das Mobiltelefon bringt. Auch hier habe ich die Funktion und den Alias, die beim Start von der Bash geladen werden.

Termux

Die verwendeten Optionen für die Ausgabe der KW mit date und ncal können auf anderen Systemen anders lauten. Insbesondere gibt es auf manchen Systemen cal statt ncal, bei dem einige Optionen andere Bedeutungen haben. Genauere Informationen finden sich üblicherweise in den zugehörigen Handbuchseiten. Gegebenenfalls müssen die Funktion oder der Alias angepasst werden.

Posted 2022-09-05
Tags: