Das Abrufen des gestrigen Datums ist eine häufige Aufgabe in Linux-Skripten und -Automatisierung. Diese Anleitung präsentiert zwei zuverlässige Methoden mit dem integrierten Befehl date
und untersucht die Aspekte der Zeitzonenbehandlung.
Inhaltsverzeichnis
Verwendung des Befehls date
Der einfachste Ansatz besteht darin, die integrierte „gestern“-Funktionalität des Befehls date
direkt zu verwenden:
date -d "yesterday" +%Y-%m-%d
Dieser Befehl:
date
: Ruft den date-Befehl auf.-d "yesterday"
: Gibt an, dass wir das gestrige Datum wünschen.+%Y-%m-%d
: Formatiert die Ausgabe als YYYY-MM-TT. Dies kann angepasst werden (z. B.+%F
,+%Y/%m/%d
,+%d/%m/%Y
).
Beispiel: Wenn heute der 27.10.2024 ist, lautet die Ausgabe: 2024-10-26
Zeitzonenbehandlung für höhere Genauigkeit
Für Skripte, die präzise Datumsberechnungen in verschiedenen Zeitzonen erfordern, wird eine robustere Methode benötigt. Während die vorherige Methode normalerweise ausreicht, können aufgrund von Übergängen zur Sommerzeit Inkonsistenzen auftreten. Dieser verfeinerte Ansatz verwendet die Epoch-Zeit:
date -d "@$(($(date +%s) - 86400))" +%Y-%m-%d
Dieser Befehl:
date +%s
: Ruft die aktuelle Zeit in Sekunden seit der Epoche (1. Januar 1970, 00:00:00 UTC) ab.$(...)
: Befehlssubstitution, die die Ausgabe des inneren Befehls erfasst.- 86400
: Subtrahiert 86400 Sekunden (ein Tag).@(...)
: Teiltdate
mit, den vorhergehenden Wert als Sekunden seit der Epoche zu interpretieren.date -d "..." +%Y-%m-%d
: Formatiert die resultierende Epoch-Zeit als YYYY-MM-TT.
Diese Methode gewährleistet die Genauigkeit, indem sie die Epoch-Zeit direkt manipuliert und mögliche zeitzonenbezogene Mehrdeutigkeiten vermeidet.
Für die meisten Szenarien reicht die erste Methode mit date -d "yesterday"
aus. Für kritische Anwendungen oder Skripte mit mehreren Zeitzonen bietet der zweite Ansatz jedoch eine zuverlässigere Lösung. Passen Sie das Ausgabeformat an Ihre spezifischen Anforderungen an.