Der Befehl date
In diesem Beitrag lernen Sie den Befehl date unter Linux-/UNIX-Betriebssystemen kennen. Der Befehl ermöglicht Ihnen die Ausgabe sowie Konfiguration der Zeit- und Datums-Information des Systems.
Allgemeine Syntax
Die allgemeine Syntax des Befehls lautet folgendermaßen:
date [Optionen] "+[Format]"
Zur Verwendung bestimmter Optionen wird eine andere Syntax benötigt:
date [-u / --utc / --universal] [MMDDhhmm[[CC]YY][.ss]]
Wird der Befehl ohne jegliche Optionen ausgeführt, so gibt er einfach die Systemzeit, also Datum und Uhrzeit, in einem festen Format aus. Es folgt ein kurzes Beispiel für die Anwendung des Befehls ohne Optionen.
Beispiel: date ohne Optionen
Dieses Beispiel zeigt kurz die Funktionsweise des Befehls date ohne Optionen.
Eingabe:
date
Ausgabe:
Mi 1. Jul 16:45:00 CEST 2020
Wichtige Optionen
Der Befehl date besitzt eine Vielzahl an Optionen, welche verwendet werden können, um beispielsweise das Ausgabeformat anzupassen oder die Systemzeit festzulegen. Im Folgenden werden einige der wichtigsten dieser Optionen kurz vorgestellt.
-d - Bestimmte Zeit ausgeben
Mit der Option -d ist es möglich, eine bestimmte durch einen gegebenen String definierte Zeit auszugeben. Der benötigte String kann in einem relativ freien, menschen-lesbaren Format angegeben werden - Lesen Sie hierzu auch den Abschnitt "Das date-String Format" in diesem Beitrag.
date -d [String]
Beispiel: Option -d
In diesem Beispiel wird mit der Option -d das Datum für den nächsten Mittwoch angezeigt.
Eingabe:
date -d "next wednesday"
Ausgabe:
Das Format der Ausgabe wird automatisch auf Grundlage des Systemgebietsschema gewählt. Da keine Uhrzeit angegeben wurde, wird diese auf 00:00:00 gesetzt.
Mi 8. Jul 00:00:00 CEST 2020
-f - Zeiten aus Datei ausgeben
Die Option -f funktioniert analog zur Option -d: Die Zeiten-Strings werden hierbei jedoch aus einer Datei ausgelesen:
date -f [Datei]
Beispiel: Option -f
Hier sollen mit der Option -f mehrere Strings zeilenweise aus einer Datei ausgelesen und als Datum ausgegeben werden.
Im Folgenden wird zunächst der Inhalt einer Datei "strings.txt" gezeigt, welche im Anschluss dem Befehl übergeben wird.
Inhalt "strings.txt":
Jul 1 00:00:42 CEST 2025
2024-02-02 00:18:00Z
last thursday
yesterday
Eingabe:
date -f strings.txt
Ausgabe:
Di 1. Jul 00:00:42 CEST 2025
Fr 2. Feb 01:18:00 CET 2024
Do 25. Jun 00:00:00 CEST 2020
Mi 1. Jul 16:16:23 CEST 2020
-I - Ausgabe nach ISO 8601
Auch mit der Option -I ist die Ausgabe der Zeit möglich. Hierbei wird jedoch die aktuelle Zeit im ISO 8601 Format ausgegeben. Durch die Konkatenation verschiedener Worte [FMT] direkt an das Ende der Option (keine Leerzeichen!) können Sie zudem die Genauigkeit der Ausgabe zu bestimmen. Möglich sind 'hours' bzw- 'h', 'minutes' bzw. 'm', 'seconds' bzw. 's' und schließlich 'ns'.
date -I[FMT]
Beispiel: Option -I (Ausgabe nach ISO 8601)
Dieses Beispiel zeigt die Ausgabe des aktuellen Datums im Format nach ISO 8601.
Eingabe:
date -I
Ausgabe:
2020-07-02
Beispiel: Option -I (Ausgabe nach ISO 8601) mit Präzisionsangabe
Auch hier wird das aktuelle Datum im Format nach ISO 8601 ausgegeben. Die Präzision wird mit einem 'h' auf Stunden gesetzt.
Eingabe:
date -Ih
Ausgabe:
2020-07-02T16+02:00
Beispiel: Option -R (Ausgabe nach RFC 2822)
Dieses Beispiel zeigt die Ausgabe der aktuellen Zeit im Format nach RFC 2822.
Eingabe:
date -R
Ausgabe:
Thu, 02 Jul 2020 16:25:56 +0200
-s - Datum / Zeit festlegen
Die Option -s wird verwendet, um die Systemzeit auf einen beliebigen durch einen String spezifizierten Wert zu setzen. Es wird wieder die im Abschnitt "Das date-String Format" gezeigte Formatierung benötigt.
date -s [String]
Beispiel: Option -s
In diesem Beispiel soll die Uhrzeit um einen Tag zurückgestellt werden. Das aktuelle Datum bzw. die aktuelle Uhrzeit ist "Do 2. Jul 16:28:43 CEST 2020".
Eingabe:
date -s "1 day ago"
Ausgabe:
In der Ausgabe ist zu sehen, dass die Zeit um genau einen Tag zurückgestellt wurde.
Mi 1. Jul 16:30:07 CEST 2020
Beispiel: Option -s
Hier soll die Zeit auf einen genau spezifizierten Wert gestellt werden.
Eingabe:
date -s "2020-07-01 15:30:00 CEST"
Ausgabe:
In der Ausgabe ist zu sehen, dass die Zeit um genau einen Tag zurückgestellt wurde.
Mi 1. Jul 15:30:00 CEST 2020
-u - Ausgabe / Setzen der UTC
Schließlich können Sie mit der Option -u die koordinierte Weltzeit ausgeben:
date -u
Beispiel: Option -u
Die Option -u wird hier verwendet, um die koordinierte Weltzeit (UTC) auszugeben.
Eingabe:
date -u
Ausgabe:
Do 2. Jul 14:43:31 UTC 2020
Das date-String Format
Die String-Angaben, beispielsweise bei den Optionen -d und -s, werden in einem menschen-lesbaren Format gemacht. Die Zeichenkette darf Angaben zum Datum und Wochentag, der Uhrzeit, Zeitzone und vielen weiteren Daten enthalten.
Beispielsweise kann ein date-String etwa folgendermaßen aussehen: "Jul 1 00:00:42 CEST 2025". Es sind aber auch wörtliche Angaben, wie zum Beispiel "yesterday", "tomorrow", "last friday" oder "next monday", möglich.
Die genaue Beschreibung aller möglichen Formate und Angaben würde den Rahmen dieses Beitrags sprengen, jedoch finden Sie auf der info-Seite des date-Befehls eine genaue Dokumentation hierzu. Sie erreichen die info-Seite unter Eingabe des folgenden Befehls:
info date
Formatangaben (Ausgabe)
Im Folgenden werden alle verfügbaren Sequenzen aufgelistet, welche für Formatangaben in [Format]-Feldern verwendet werden können.
Verfügbare Sequenzen
Sequenz | Ausgabe | Sequenz | Ausgabe |
---|---|---|---|
%a | Gekürzter Wochentag nach Systemgebietsschema | %A | Voller Wochentag nach Systemgebietsschema |
%b | Gekürzter Monat nach Systemgebietsschema | %B | Voller Monat nach Systemgebietsschema |
%c | Datum und Uhrzeit nach Systemgebietsschema | %C | Jahrhundert |
%d | Tag im Monat (z.B. 07) | %D | Datum (wie: %m/%d/%y) |
%e | Tag im Monat mit Padding (wie %_d) | %F | Volles Datum (wie %+4Y-%m-%d) |
%g | Letzte zwei Zeichen der Jahreszahl | %G | Volles Jahr |
%h | Genauso wie %b | %H | Stunde (24h Format) |
%I | Stunde (12h Format) | %j | Tag im Jahr (001-366) |
%k | Stunde (24h Format) mit Padding (wie %_H) | %l | Stunde (12h Format) mit Padding (wie %_H) |
%m | Monat (01-12) | %M | Minute (00-59) |
%n | Neue Zeile | %N | Nanosekunden (000000000-999999999) |
%p | AM/PM-Zeit nach Systemgebietsschema (Wenn unbekannt: Leer) | %P | Genauso wie %p aber Kleinschreibung |
%q | Viertel des Jahres (1-4) | | Cell |
%r | 12h Uhrzeit nach Systemgebietsschema | %R | 24h Uhrzeit (Stunde und Minute) (wie %H:%M) |
%s | Timestamp in Sekunden seit dem 01.01.1970 um Mitternacht | %S | Sekunde (00-60) |
%t | Tab | %T | Zeit (wie %H:%M:%S) |
%u | Tag der Woche (1-7, wobei 1 Montag ist) | %U | Wochennummer des Jahres, wobei Sonntag erster Tag der Woche ist (00-53) |
%V | ISO Wochennummer mit Montag als erster Tag der Woche (01-53) | Cell | Cell |
%w | Tag der Woche (0-6, wobei 0 Sonntag ist) | %W | Wochennummer des Jahres, wobei Montag erster Tag der Woche ist (00-53) |
%x | Datum, dargestellt nach Systemgebietsschema | %X | Zeit, dargestellt nach Systemgebietsschema |
%y | Letzte zwei Zeichen der Jahreszahl (00-99) | %Y | Jahr |
%z | numerische Zeitzone (+hhmm) | %:z | numerische Zeitzone (+hh:mm) |
%::z | numerische Zeitzone (+hh:mm:ss) | %:::z | numerische Zeitzone mit : bis zur notwendigen Präzision |
%Z | Alphanumerische Zeitzonen-Abkürzung | %% | Prozentzeichen % |
Beispiel: Format-Sequenzen
Hierbei sollen einige der Sequenzen verwendet werden, um die aktuelle Kalenderwoche und Uhrzeit auszugeben.
Eingabe:
date "+KW:%V Uhrzeit:%H:%M:%S"
Ausgabe:
KW:27 Uhrzeit:16:48:43
Optionale Flags
Standardmäßig verwendet date bei numerischen Angaben das Zero-Padding (Null-Padding). Dieses Verhalten kann durch Anfügen optionaler Flags hinter dem Prozentzeichen '%' verändert werden.
Die folgenden optionalen Flags sind verfügbar:
Flag | Funktion |
---|---|
- | Kein Padding verwenden |
_ | Padding mit Leerzeichen |
0 | Padding mit Nullen |
+ | Padding mit Nullen, Zukünftigen Jahren mit mehr als 4 Ziffern ein '+' voranstellen |
^ | Wenn möglich, Großschreibung verwenden |
# | Wenn möglich, umgekehrten Fall verwenden |
Nach jedem Flag kann optional auch eine Feldbreite in Form einer Dezimalzahl angegeben werden. Hinter einer Feldbreiten-Angabe kann zudem auch ein optionaler Modifier folgen, welcher entweder die Nutzung der alternativen Repräsentationen- ('E'), oder der alternativen numerischen Symbole ('0') nach Systemgebietsschema - wenn verfügbar - aktiviert.
Beispiel: Optionale Flags
Zuletzt sollen hier einmal die optionalen Flags eingesetzt werden, um das Padding vollständig auszuschalten.
Zunächst wird beispielhaft die Darstellung mit Zero-Padding gezeigt.
Eingabe:
date "+%d"
Ausgabe:
Der aktuelle Tag im Monat wird hierbei mit Nullen auf zwei Stellen "aufgefüllt".
02
Nun wird der optionale Flag '-' hinter dem Prozentzeichen eingesetzt.
Eingabe:
date "+%-d"
Ausgabe:
Nach Hinzufügen des optionalen Flag wird keine Null mehr angefügt. Die Ausgabe ist damit nun einstellig.
2
Abonniere JETZT unseren Newsletter!
Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!