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. -d fü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

PlatzhalterBedeutungBeispiel
%YJahr (4-stellig)2025
%mMonat (01-12)01
%dTag (01-31)16
%HStunde (00-23)14
%MMinute (00-59)30
%SSekunde (00-59)45
%AWochentag (ausgeschrieben)Donnerstag
%aWochentag (abgekürzt)Do
%BMonat (ausgeschrieben)Januar
%bMonat (abgekürzt)Jan
%jTag des Jahres (001-366)016
%uWochentag (1=Mo, 7=So)4
%sUnix-Zeitstempel1737020415

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.

Verwandte Artikel