[Quicktipp] Datumsberechnung im Linux Terminal

Neulich musste ich bei einem Cronjob ein Argument hinzufügen, damit ein Script immer mit einem Datum von vor vier Tagen arbeitet. Das man in einem Cronjob ein Datum direkt angegeben kann, hatte ich letztens bereits in dem Artikel Cronjob Ausgabe in datumsbasierte Datei loggen beschrieben.

Kommen wir zur Datumsberechnung direkt im Linux Terminal.

Datumsberechnung per date Kommando

Zur Ausgabe von dem aktuellen Datum reicht das date Kommando:

nico@HO-PC-mint$ echo $(date +%Y%m%d)
20220804

Je nachdem in welchen Format man das Datum braucht, kann das Datum auch anders formatiert werden:

nico@HO-PC-mint$ echo $(date +%d.%m.%Y)
03.08.2022

# mit Uhrzeit
nico@HO-PC-mint$ echo $(date -d "$date days" +%d.%m.%Y %H:%M)
03.08.2022 19:17

In meinem Fall möchte ich das der Cronjob immer mit einem Datum von vor vier Tagen arbeitet. Also muss ich in diesem Fall 4 Tage abziehen. Dazu geben wir in dem Kommando mittels "$date -4 days" an, dass vier Tage abgezogen werden sollen:

nico@HO-PC-mint$ echo $(date -d "$date -4 days" +%d.%m.%Y)
27.07.2022

Nicht nur Tage, sondern auch Wochen, Monate oder Jahre können von dem aktuellen Datum abgezogen werden:

# -4 Monate
nico@HO-PC-mint$ echo $(date -d "$date -4 month" +%d.%m.%Y)
03.04.2022

# -2 Jahre
nico@HO-PC-mint$ echo $(date -d "$date -2 year" +%d.%m.%Y)
03.04.2020

Die Berechnung geht aber auch in die andere Richtung. Mit einem Plus Zeichen + statt einem Minus werden hier 2 Wochen addiert:

# +2 Wochen
nico@HO-PC-mint$ echo $(date -d "$date +2 week" +%d.%m.%Y)
17.08.2022

Leave a Reply