Der Befehl date zeigt das aktuelle Systemdatum und die Uhrzeit an. Er kann Zeitangaben in beliebigen Formaten ausgeben, mit Datum rechnen und Unix-Zeitstempel konvertieren.
Syntax
date [OPTIONEN] [+FORMAT]
- OPTIONEN - Steuern das Verhalten (z.B.
-dfür ein bestimmtes Datum) - FORMAT - Definiert die Ausgabe mit Platzhaltern (beginnt mit
+)
Aktuelles Datum anzeigen
Ohne Argumente gibt date das aktuelle Datum im Standardformat aus:
date
Die Ausgabe enthält Wochentag, Datum, Uhrzeit und Zeitzone:
Do 16. Jan 10:30:15 CET 2025
Ausgabe formatieren
Mit einem Formatstring nach dem +-Zeichen bestimmst du, wie die Ausgabe aussieht. Platzhalter beginnen mit % und werden durch ihre Werte ersetzt.
date "+%Y-%m-%d"
2025-01-16
Du kannst beliebigen Text mit Platzhaltern kombinieren:
date "+Jahr: %Y, Monat: %m, Tag: %d"
Jahr: 2025, Monat: 01, Tag: 16
Für mehrzeilige Ausgaben verwende %n als Zeilenumbruch:
date "+Datum: %d.%m.%Y%nUhrzeit: %H:%M:%S"
Datum: 16.01.2025
Uhrzeit: 10:30:15
Wichtige Formatplatzhalter
| Platzhalter | Bedeutung | Beispiel |
|---|---|---|
%Y | Jahr (4-stellig) | 2025 |
%m | Monat (01-12) | 01 |
%d | Tag (01-31) | 16 |
%H | Stunde (00-23) | 14 |
%M | Minute (00-59) | 30 |
%S | Sekunde (00-59) | 45 |
%A | Wochentag (ausgeschrieben) | Donnerstag |
%a | Wochentag (abgekürzt) | Do |
%B | Monat (ausgeschrieben) | Januar |
%b | Monat (abgekürzt) | Jan |
%j | Tag des Jahres (001-366) | 016 |
%u | Wochentag (1=Mo, 7=So) | 4 |
%s | Unix-Zeitstempel | 1737020415 |
Eine vollständige Liste findest du mit man date.
Mit einem bestimmten Datum arbeiten
Die Option -d akzeptiert ein Datum als Zeichenkette und gibt es formatiert aus. Das ist nützlich für Datumsberechnungen.
date -d "2024-12-24"
Di 24. Dez 00:00:00 CET 2024
Kombiniere -d mit einem Formatstring:
date -d "2024-12-24" "+%A, %d. %B %Y"
Dienstag, 24. Dezember 2024
Relative Zeitangaben
date versteht auch relative Angaben wie „morgen" oder „nächste Woche":
date -d "tomorrow"
date -d "next friday"
date -d "2 weeks ago"
Für Berechnungen mit Tagen, Stunden oder Minuten:
date -d "+3 days"
date -d "-2 hours"
date -d "next month"
Unix-Zeitstempel
Der Unix-Zeitstempel (Epoch) zählt die Sekunden seit dem 1. Januar 1970, 00:00:00 UTC. Mit date kannst du zwischen lesbaren Daten und Zeitstempeln konvertieren.
Aktuellen Zeitstempel ausgeben
date +%s
1737020415
Zeitstempel in Datum umwandeln
Setze ein @ vor den Zeitstempel:
date -d @1737020415
Do 16. Jan 10:00:15 CET 2025
Mit Formatierung:
date -d @1737020415 "+%d.%m.%Y %H:%M"
16.01.2025 10:00
Zeitzonen
Standardmäßig verwendet date die Systemzeitzone. Mit der Umgebungsvariable TZ kannst du eine andere Zeitzone setzen.
TZ="America/New_York" date
Do 16. Jan 04:30:15 EST 2025
Zeitzonen für verschiedene Städte anzeigen:
TZ="Asia/Tokyo" date "+%H:%M %Z"
18:30 JST
Verfügbare Zeitzonen findest du mit:
timedatectl list-timezones
Änderungsdatum einer Datei anzeigen
Die Option -r zeigt das Änderungsdatum einer Datei:
date -r /etc/passwd
Mi 10. Jan 15:22:08 CET 2025
Mit Formatierung:
date -r /etc/passwd "+%Y-%m-%d"
Praktische Anwendungen
Dateinamen mit Zeitstempel
Erstelle Dateinamen mit aktuellem Datum für Backups oder Logs:
backup_$(date +%Y%m%d).tar.gz
Ergibt: backup_20250116.tar.gz
Mit Uhrzeit für mehr Präzision:
log_$(date +%Y%m%d_%H%M%S).txt
Ergibt: log_20250116_103015.txt
In Shell-Skripten
Speichere das Datum in einer Variable:
heute=$(date +%Y-%m-%d)
echo "Backup vom $heute"
Dauer zwischen zwei Daten berechnen
Berechne die Differenz in Sekunden und rechne um:
start=$(date -d "2025-01-01" +%s)
ende=$(date -d "2025-12-31" +%s)
tage=$(( (ende - start) / 86400 ))
echo "$tage Tage"
364 Tage
Systemzeit setzen
Das Setzen der Systemzeit erfordert Root-Rechte. Auf den meisten Systemen synchronisiert sich die Uhr automatisch über NTP.
sudo date --set="2025-01-16 10:30:00"
Verwende besser timedatectl für dauerhafte Änderungen:
sudo timedatectl set-time "2025-01-16 10:30:00"
Zusammenfassung
Der date-Befehl zeigt Datum und Uhrzeit an, formatiert Zeitangaben mit Platzhaltern und konvertiert Unix-Zeitstempel. Mit der Option -d kannst du mit beliebigen Daten arbeiten und relative Berechnungen durchführen. Für Backups und Logs ist date unverzichtbar, um Dateinamen mit Zeitstempeln zu versehen.