3 Stimmen

Den nächsten Monat mit dem Befehl "date" erhalten?

Ich hatte das in einem meiner Skripte, von dem ich sicher bin, dass es seit Jahren funktioniert hat. Heute sagt es, dass der nächste Monat Mai ist?

#date
Mon Mar 31 15:30:13 BST 2014

#date +"%B %Y" --date="+1 month"
Mai 2014

Weiß jemand, was das Problem ist - sollte ich ein besseres "nächstes Monat" Skript verwenden?

17voto

Timmah Punkte 1793

Von den GNU man pages:

Der Spielraum bei Dateneinheiten kann Probleme mit relativen Elementen verursachen. Zum Beispiel könnte '2003-07-31 -1 Monat' zu 2003-07-01 auswerten, weil 2003-06-31 ein ungültiges Datum ist. Um den vorherigen Monat zuverlässiger zu bestimmen, können Sie nach dem Monat vor dem 15. des aktuellen Monats fragen

Sie können einen Tag verwenden, der in allen Monaten existiert:

date +"%B %Y" --date="$(date +%Y-%m-15) nächsten Monat"

Ergebnis:

April 2014

-2voto

user9535989 Punkte 1

Um den vorherigen Monat zu finden, lautet der Befehl:

date -d "-1 Monat" +%Y/%-m/%-d

wird Ihnen am 22.03.2018 den 22.02.2018 geben und

date -d "-1 Tag" +%Y/%-m/%-d

wird Ihnen am 21.03.2018 geben

Sie können so viele Monate oder Tage hinzufügen oder subtrahieren, wie Sie möchten. Wenn Sie genug Monate abziehen, wird es zum letzten Jahr gehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X