Bitte warten...

Bash: Zeit und Datum

Das Kommando date gibt das aktuelle Datum in der Zeitzone des Systems aus.

Code kopieren
date  # Mi 31. Aug 09:08:36 CEST 2022

Mit der Option -d können aus einem Unix-Zeitstempel, einer Zeit-/Datumsangabe im Format YYYY/MM/DD hh:mm:ss oder im ISO-Format einzelne Werte extrahiert werden. Die aktuelle Zeit ist in der Umgebungsvariable EPOCHSECONDS enthalten.

Code kopieren
tstr=@$EPOCHSECONDS    # == date "+%s"
tstr="2022/09/05 19:04:01.12345"
tstr="2022-09-05T19:04:01.12345+0200"
echo $tstr
echo -- Zeitstempel
date -d "$tstr" "+%s"  # Sekunden seit 1970-01-01 00:00:00 UTC
echo -- Datum
date -d "$tstr" "+%c"  # Datum und Zeit der Lokale (z. B. Fr, 18. Nov 2005 15:05:42)
date -d "$tstr" "+%FT%T.%N%z"  # ISO-Format
date -d "$tstr" "+%x"  # Datumsrepräsentation der Lokale (z. B. 18.11.2005)
date -d "$tstr" "+%D"  # amerikanisches Datumsformat; dasselbe wie %m/%d/%y
date -d "$tstr" "+%F"  # volles Datum; dasselbe wie %+4Y-%m-%d
echo -- Zeit
date -d "$tstr" "+%T"  # Zeit; dasselbe wie %H:%M:%S
date -d "$tstr" "+%X"  # Zeitrepräsentation der Lokale (z. B. 15:14:33)
date -d "$tstr" "+%R"  # Zeit im 24‐Stunden‐Format; dasselbe wie %H:%M
date -d "$tstr" "+%r"  # Zeit im 12‐Stunden‐Format (z. B. 03:11:30)
echo -- Jahr
date -d "$tstr" "+%Y"  # Jahr
date -d "$tstr" "+%G"  # Jahr der ISO‐Wochennummer (siehe %V); normalerweise nur mit %V benutzt
date -d "$tstr" "+%C"  # Jahrhundert; wie %Y, aber ohne die letzten beiden Stellen (z. B. 20)
date -d "$tstr" "+%g"  # 2-stelliges Jahr der ISO‐Wochennummer (siehe %G)
date -d "$tstr" "+%y"  # die letzten zwei Ziffern des Jahres (00..99)
echo -- Monat
date -d "$tstr" "+%m"  # Monat (01..12)
date -d "$tstr" "+%b"  # abgekürzter Monatsname der Lokale (z. B. Nov)
date -d "$tstr" "+%h"  # dasselbe wie %b
date -d "$tstr" "+%B"  # voller Monatsname der Lokale, variable Länge (z. B. November)
echo -- Tag
date -d "$tstr" "+%d"  # Tag des Monats (z. B. 01)
date -d "$tstr" "+%e"  # Tag des Monats, mit Leerzeichen aufgefüllt; wie %_d
echo -- Stunde
date -d "$tstr" "+%H"  # Stunde (00..23)
date -d "$tstr" "+%k"  # Stunde, mit Leerzeichen aufgefüllt ( 0..23); dasselbe wie %_H
date -d "$tstr" "+%I"  # Stunde (01..12)
date -d "$tstr" "+%l"  # Stunde, mit Leerzeichen aufgefüllt ( 1..12); dasselbe wie %_I
echo -- Minute
date -d "$tstr" "+%M"  # Minute (00..59)
echo -- Sekunde
date -d "$tstr" "+%S"  # Sekunde (00..60)
date "+%s.%N"          # aktueller Zeitstempel mit Millisekunden
echo -- Sekundenbruchteile
date -d "$tstr" "+%N"  # Nanosekunden (000000000..999999999)
echo -- Zeitzone
date -d "$tstr" "+%z"     # +hhmm numerische Zeitzone (z. B. +0100)
date -d "$tstr" "+%:z"    # +hh:mm numerische Zeitzone (z. B. +01:00)
date -d "$tstr" "+%::z"   # +hh:mm:ss numerische Zeitzone (z. B. +01:00:00)
date -d "$tstr" "+%:::z"  # numerische Zeitzone mit :, so genau wie nötig (z. B. -04 oder +05:30)
date -d "$tstr" "+%Z"     # alphabetische Zeitzonenabkürzung (z. B. CET)
echo -- Woche
date -d "$tstr" "+%V"  # ISO‐Wochennummer mit Montag als erstem Tag der Woche (01..53)
date -d "$tstr" "+%U"  # Wochennummer des Jahres mit Sonntag als erstem Tag der Woche (00..53)
date -d "$tstr" "+%W"  # Wochennummer des Jahres mit Montag als erstem Tag der Woche (00..53)
echo -- Wochentag
date -d "$tstr" "+%u"  # Tag der Woche (1..7); 1 steht für Montag
date -d "$tstr" "+%w"  # Tag der Woche (0..6); 0 steht für Sonntag
date -d "$tstr" "+%a"  # abgekürzter Name des Wochentags der Lokale (z. B. Son)
date -d "$tstr" "+%A"  # voller Name des Wochentags der Lokale, (z. B. Freitag)
echo -- Sonstige
date -d "$tstr" "+%j"  # Tag des Jahres (001..366)
date -d "$tstr" "+%q"  # Quartal (1..4)
date -d "$tstr" "+%p"  # das Äquivalent von AM oder PM in der Lokale; leer wenn unbekannt
date -d "$tstr" "+%P"  # wie %p, aber in Kleinbuchstaben

Viele der ausgegebenen Zahlen werden automatisch mit 0 aufgefüllt, wenn die Anzahl der Ziffern kleiner als die maximal mögliche ist, um zu gewährleisten, dass die Zeichenketten aller möglichen Zeitangaben eines Typs gleich lang sind, was besonders für die tabellarische Darstellung hilfreich ist. Beispielsweise wird die Minutenzahl 4 als 04 dargestellt. Ebenso kann man Zahlen mit einem Leerzeichen auffüllen lassen oder das Auffüllen ganz unterdrücken. Dazu muss dem Ersetzungsschalter entweder ein Unterstrich _ oder ein Minuszeichen - vorangestellt werden.

Code kopieren
tstr="2022-09-05T06:04:01+0200"
date -d "$tstr" "+%M"   # Minute mit 0 aufgefüllt
date -d "$tstr" "+%_M"  # Minute mit Leerzeichen aufgefüllt
date -d "$tstr" "+%-M"  # Auffüllung deaktiviert

Mit der Option -u wird die Zeit in UTC ausgegeben.

Code kopieren
date -d "$tstr" "+%c"
date -ud "$tstr" "+%c"
date -d "$tstr" "+%FT%T%z"
date -ud "$tstr" "+%FT%T%z"

Es kann auch eine Zeichenkette angegeben werden, die einen Zeitpunkt in der Zukunft relativ zum aktuellen berechnet. Erlaubt sind Groß- und Kleinschreibung, Singular- und Pluralformen sowie Abkürzungen für Sekunden, Minuten und Wochentage. Für Zeitpunkte in der Vergangenheit wird das Schlüsselwort ago angefügt.

Code kopieren
date -d "1 second" "+%c"   # sec secs second seconds
date -d "2 minutes" "+%c"  # min mins minute minutes
date -d "3 hours" "+%c"    # hour hours
date -d "4 DAYS" "+%c"     # day days
date -d "5 weeks" "+%c"    # week weeks
date -d "6 months" "+%c"   # month months
date -d "7 years" "+%c"    # year years

date -d "7 years ago" "+%c"

date -d "tomorrow" "+%c"
date -d "YESTERDAY" "+%c"
date -d "next Mon" "+%c"     # mon monday
date -d "last FRIDAY" "+%c"  # fri friday