Den gleichen Tag in den Vormonaten ermitteln

Datum: 2002-08-01
Quelle: suse-linux

Worum ging es?

Etwas weiter als der Artikel Vormonat ermitteln geht folgendes Beispiel. Es ermittelt jeweils den gleichen Tag in den Vormonaten. Hier muss man wieder das Monatsende beachten: Nicht jeder Monat hat 31 Tage. In diesem Fall wird der letzte Tag des entsprechenden Monats angezeigt.

Code
for mon in `seq 1 12`; do
  ymd=`date +%Y%m\`date +%d\` -d "\`date +\"%Y-%m-15\"\` -$mon month"`
  test `date +%Y%m%d -d $ymd` = $ymd || \
    ymd=`date +%Y%m%d -d "\`date +\"%Y-%m-01\"\` -\`expr $mon - \
         1\` month -1 day"`
  echo $ymd
done
Beschreibung

Die Schleife berechnet nacheinander die gleichen Tage der letzten 12 Vormonate. Es wird ausgenutzt, dass das Subtrahieren eines Monats vom aktuellen Datum in Monaten mit 31 Tagen den gleichen Monat liefert. In diesem Fall wird der Vortag des 1. ermittelt. Auch hier muss man unter Umständen (Lokalisierung) wieder das Anzeigeformat der date-Aufrufe anpassen.