On Mon, Mai 14, 2001 at 06:49:09 +0200, Matthias Pretzer wrote:
Am 14.05.2001 schrieb David Haller:
On Mon, 14 Mai 2001, Boris Schauerte wrote:
Stelle nochmal eine Frage, wie könnte ich bei einem Monatswechsel den Monatsnamen vom Monat davor herausfinden? Mit dem GNU date: date "+%B" -d 'last month'
Hm, das ist zumindest bei mir unzuverlässig:
:~ >date Sam Mär 31 00:00:27 CEST 2001 :~ >date "+%B" -d 'last month' März :~ >
In der Tat ziemlich merkwürdig. Das klappt bei mir auch mit anderen Monaten (immer mit dem letzten Tag des Monats getestet) nicht. Mal zieht er 28 Tage ab, mal 30 ... ?
########### fixme! this is ugly #GNU date gives me --date='1 months ago' option #but this yields 03 if used on 31th march #so I use this workaround MONTH=$(date +%m) YEAR=$(date +%y) LASTMONTH=$(($MONTH-1)) LASTMONTH=$(printf %02d $LASTMONTH) DATE=$LASTMONTH-$YEAR # now that's ugly - isn't it?
Yupp! Da sind wir nämlich wieder beim Thema Kompatibilität ;-) Nur so aus Jux mal die kompatible Version (Wehe Ihr lacht! ;-) last_month=`expr \`date +%m\` + \`date +%Y\` \* 12 - 1 - \ \( \`date +%m\` + \`date +%Y\` \* 12 - 1 \) / 12 \* 12` Das ist jetzt allerdings nur die Zahl, nicht der Monatsname :-( Ah, gerade fällt mir noch eine Version ein: Wenn am _Monatsende_ Stress aufkommt, dann legen wir das Referenzdatum doch einfach in die Monatsmitte ;-) date -d "`date +\"%b 15 %Y\"` 1 month ago" +%b liefert IMHO immer den korrekten Vormonat als abgekürzte Bezeichnung. Wenn das in eine Variable soll: last_month=`date -d "\`date +\"%b 15 %Y\"\` 1 month ago" +%b` Dumm kann man sein, man muss sich nur zu helfen wissen ;-) Jan