Harting Development

Das Linux-Datumsformat verstehen und verwenden

Lukas Fuchs vor 7 Monaten in  Einführung in Linux-Datumsformate 3 Minuten Lesedauer

Was ist das Linux-Datumsformat?

Das Linux-Datumsformat ist eine standardisierte Methode zur Darstellung von Datum und Uhrzeit in Linux-Systemen. Es ist von entscheidender Bedeutung für die korrekte Speicherung und Anzeige von zeitbezogenen Daten in verschiedenen Anwendungen und Skripten.

Struktur des Linux-Datumsformats

Das Linux-Datumsformat basiert auf dem Unix-Zeitstempel, einer numerischen Darstellung der Zeit seit der Epoche (1. Januar 1970, 00:00:00 UTC). Diese numerische Darstellung kann in verschiedene lesbare Textformate konvertiert werden.

Formate für Datum und Uhrzeit

Linux bietet verschiedene Formate für die Darstellung von Datum und Uhrzeit, darunter:

  • ISO 8601: Internationaler Standard für Datum- und Uhrzeitdarstellung, z. B. 2023-02-14 für das Datum und 14:30:00 für die Uhrzeit
  • Lokalisierte Formate: Auf die Ländereinstellungen des Systems abgestimmte Formate, z. B. 14.02.2023 für das Datum in Deutschland
  • Benutzerdefinierte Formate: Mittels Datumsformatzeichenfolgen anpassbare Formate, z. B. %Y-%m-%d %H:%M:%S für Datum und Uhrzeit im Format Jahr-Monat-Tag Stunde:Minute:Sekunde

Verschiedene Formate des Datums und der Uhrzeit in Linux

Linux bietet zahlreiche Optionen zum Anzeigen und Formatieren von Datums- und Uhrzeitinformationen. Im Folgenden findest du einige gängige Formate:

Date and Time Basics

  • ISO 8601-Format: Das internationale Standardformat, das Jahr, Monat, Tag, Stunde, Minute und Sekunde trennt, z. B. 2023-03-08T14:30:00.
  • POSIX-Format: Ein zeitstempelbasiertes Format, das die Anzahl der Sekunden seit dem 1. Januar 1970 darstellt, z. B. 1646793800.
  • Epoch-Zeit: Ähnlich wie POSIX, jedoch ohne die Dezimalstellen, z. B. 16467938.

Benutzerdefinierte Formatierung

Zusätzlich zu diesen Standardformaten kannst du mit Hilfe von Datumsformatzeichenfolgen deine eigenen benutzerdefinierten Formate erstellen. Hier sind einige gebräuchliche Zeichenfolgen:

  • %Y: Vierstelliges Jahr
  • %m: Zweisteiliger Monat
  • %d: Zweisteiliger Tag
  • %H: Zweistündige Stunde (24-Stunden-Format)
  • %M: Zweiminütige Minute
  • %S: Zweiteilige Sekunde

Du kannst diese Zeichenfolgen kombinieren, um verschiedene Formate zu erstellen, z. B. %Y-%m-%d %H:%M:%S für das Format 2023-03-08 14:30:00.

Lokalisierung

Linux bietet die Möglichkeit, Datums- und Uhrzeitformate zu lokalisieren. Dies ermöglicht es dir, die Formate basierend auf deiner Region oder Sprache anzupassen. Du kannst die Umgebungsvariable LANG verwenden, um die Lokalisierungseinstellungen zu ändern.

Zum Beispiel würde die Einstellung LANG=de_DE deutsche Datums- und Uhrzeitformate verwenden.

Konvertierungen

Möglicherweise musst du Datums- und Uhrzeitformate für verschiedene Zwecke konvertieren. Du kannst hierfür Befehle wie date -d, date +%s und strftime verwenden.

Beispiel: Konvertierung von POSIX-Zeit in ISO 8601-Format:

echo 1646793800 | date -d @%s +%Y-%m-%dT%H:%M:%S

Ausgabe: 2023-03-08T14:30:00

Verwendung des Befehls "date" zum Anzeigen und Ändern des Datums

Der Befehl date ist ein vielseitiges Tool in Linux, mit dem du das aktuelle Datum und die aktuelle Uhrzeit anzeigen, das Format anpassen und sogar das Systemdatum ändern kannst. Hier erfährst du, wie du den Befehl date effektiv nutzt.

Anzeigen des aktuellen Datums und der Uhrzeit

Um das aktuelle Datum und die Uhrzeit anzuzeigen, führe einfach den Befehl date aus:

$ date
Mon Aug  1 00:00:00 UTC 2023

Dies zeigt das aktuelle Datum im Montag, 1. August 2023, um 00:00:00 Uhr in koordinierter Weltzeit (UTC) an. Du kannst auch die Option -u verwenden, um die Uhrzeit in UTC anzuzeigen, selbst wenn dein System auf eine andere Zeitzone eingestellt ist:

$ date -u
Mon Aug  1 01:00:00 UTC 2023

Anpassen des Datumsformats

Mit dem Befehl date kannst du das Ausgabeformat anpassen, indem du Formatzeichenfolgen verwendest. Die am häufigsten verwendeten Formatzeichenfolgen sind:

  • %Y: Jahr mit vier Ziffern
  • %m: Monat mit zwei Ziffern
  • %d: Tag des Monats mit zwei Ziffern
  • %H: Stunde mit zwei Ziffern (24-Stunden-Format)
  • %M: Minute mit zwei Ziffern
  • %S: Sekunde mit zwei Ziffern

Zum Beispiel kannst du Folgendes ausführen, um das Datum im Format "JJJJ-MM-TT hh:mm:ss" anzuzeigen:

$ date +%F %T
2023-08-01 01:03:33

Ändern des Systemdatums

Du kannst den Befehl date auch verwenden, um das Systemdatum zu ändern. Hierfür benötigst du jedoch Root-Berechtigungen. Führe den folgenden Befehl aus, um das Datum auf den 1. Januar 2023 zu setzen:

$ sudo date 010120230000

Denke daran, dass die Änderung des Systemdatums Auswirkungen auf andere Anwendungen haben kann, die auf die aktuelle Zeit angewiesen sind.

Verwendung von Datumsformatzeichenfolgen

Um ein Datum oder eine Uhrzeit in einem bestimmten Format auszugeben, kannst du Datumsformatzeichenfolgen verwenden. Diese Zeichenfolgen bestehen aus einem Prozentzeichen (%) gefolgt von einem Formatbezeichner, der angibt, welcher Teil von Datum und Uhrzeit ausgegeben werden soll.

Formatbezeichner

Die am häufigsten verwendeten Formatbezeichner sind:

  • %a: Abgekürzter Wochentag
  • %A: Vollständiger Wochentag
  • %b: Abgekürzter Monatsname
  • %B: Vollständiger Monatsname
  • %d: Tag des Monats (01-31)
  • %H: Stunde (00-23)
  • %I: Stunde (01-12)
  • %m: Monat des Jahres (01-12)
  • %M: Minute (00-59)
  • %S: Sekunde (00-59)
  • %y: Die letzten beiden Ziffern des Jahres (00-99)
  • %Y: Das vollständige Jahr (0001-9999)

Beispiel

Um das aktuelle Datum in folgendem Format auszugeben: Tag, Monat Tag, Jahr, verwendest du folgende Datumsformatzeichenfolge:

date +%A, %B %d, %Y

Die Ausgabe wäre zum Beispiel: Donnerstag, Juni 22, 2023.

Benennung eigener Formate

Du kannst auch deine eigenen Datumsformate benennen, indem du sie der Umgebungsvariablen DATE_FORMAT zuweist. Um beispielsweise ein Format zu definieren, das das Datum im Format JJJJ-MM-TT ausgibt, würdest du Folgendes ausführen:

export DATE_FORMAT=%Y-%m-%d

Danach kannst du den Befehl date ohne Argumente verwenden, um das Datum im angegebenen Format auszugeben.

Formatieren von Datum und Uhrzeit mit "strftime"

Die Funktion strftime ist ein leistungsstarkes Werkzeug zum Formatieren von Datums- und Uhrzeitwerten. Sie ermöglicht es dir, das Ausgabeformat nach deinen Wünschen anzupassen und spezifischere Informationen zu extrahieren, als es mit dem Befehl date möglich ist.

Was ist "strftime"?

strftime steht für "strftime" und ist eine C-Bibliotheksfunktion, die zum Formatieren von Datums- und Uhrzeitwerten verwendet wird. Sie nimmt zwei Argumente entgegen:

  • Ein Datums-/Uhrzeitwert (normalerweise das Ergebnis eines Aufrufs von time(NULL))
  • Eine Formatzeichenfolge, die angibt, wie das Datum und die Uhrzeit formatiert werden sollen

Formatzeichenfolgen

Formatzeichenfolgen sind eine Sammlung von codes, die die verschiedenen Komponenten von Datum und Uhrzeit darstellen. Hier sind einige der gängigsten Formatcodes:

  • %a: Abgekürzter Wochentagname
  • %b: Abgekürzter Monatsname
  • %d: Tag des Monats (01-31)
  • %H: Stunde (00-23)
  • %M: Minute (00-59)
  • %S: Sekunde (00-59)
  • %Y: Jahr (z. B. 2023)

Verwendung von "strftime"

Um strftime zu verwenden, musst du die Funktion mit den folgenden Schritten aufrufen:

  1. Includiere die Bibliothek: Füge deinem Programm #include <time.h> hinzu.
  2. Hole den Datums-/Uhrzeitwert: Rufe time(NULL) auf, um den aktuellen Datums-/Uhrzeitwert zu erhalten.
  3. Definiere die Formatzeichenfolge: Erstelle eine Zeichenfolge, die die gewünschten Formatcodes enthält.
  4. Allokiere Speicherplatz für das formatierte Datum: Allokiere genügend Speicherplatz für das formatierte Datum.
  5. Formatiere das Datum: Rufe strftime auf und übergib den Datums-/Uhrzeitwert, die Formatzeichenfolge und den Speicherplatz für das formatierte Datum.

Beispiel

Der folgende Code zeigt, wie du strftime verwendest, um das Datum und die Uhrzeit im ISO 8601-Format zu formatieren:

#include <time.h>
#include <stdio.h>

int main() {
    time_t now = time(NULL);
    char buf[100];
    strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%SZ", localtime(&now));
    printf("%s\n", buf);
    return 0;
}

Dieser Code gibt eine Zeichenfolge wie "2023-03-08T14:30:00Z" aus.

Lokalisierung von "strftime"

strftime kann auch verwendet werden, um Datums- und Uhrzeitwerte zu lokalisieren. Dazu musst du die Umgebungsvariable LC_TIME auf das gewünschte Gebietsschema einstellen.

Anpassung von "strftime"

Du kannst benutzerdefinierte Formatcodes erstellen, indem du die %-Spezifizierung mit Modifikatoren und Zeichenfolgen kombinierst. Weitere Informationen findest du in der Manpage zu strftime.

Lokalisieren von Datums- und Uhrzeitformaten

Das Linux-Datumsformat ist standardmäßig auf die englische Sprache eingestellt. Falls du jedoch in einer anderen Region oder Sprache lebst, möchtest du vielleicht die Datums- und Uhrzeitformate lokalisieren, um sie besser lesen und verstehen zu können.

Vorteile der Lokalisierung

Die Lokalisierung von Datums- und Uhrzeitformaten bietet mehrere Vorteile:

  • Verbesserte Lesbarkeit: Durch die Verwendung vertrauter Formate werden Datumsangaben und Uhrzeiten für dich viel einfacher zu lesen und zu verstehen sein.
  • Fehlerreduzierung: Wenn du das richtige Datums- und Uhrzeitformat für deine Region verwendest, verringert sich das Risiko, dass du bei der Eingabe oder Interpretation von Daten Fehler machst.
  • Kulturelle Relevanz: Die Verwendung lokalisierter Formate zeigt deine Rücksichtnahme auf die kulturellen Normen und Bräuche.

Wie man Datums- und Uhrzeitformate lokalisiert

Um Datums- und Uhrzeitformate zu lokalisieren, folge diesen Schritten:

1. Umgebungsvariablen festlegen

Du kannst die Umgebungsvariablen LANG und LC_TIME festlegen, um die Sprache und das Gebietsschema für Datums- und Uhrzeitformate zu ändern. Zum Beispiel kannst du für Deutsch in Deutschland Folgendes eingeben:

export LANG=de_DE.UTF-8
export LC_TIME=de_DE.UTF-8

2. Lokale tools verwenden

Es gibt Tools wie localectl und locale, mit denen du die Gebietsschemaeinstellungen deines Systems verwalten kannst. Mit localectl kannst du die aktuelle Gebietsschemaeinstellung anzeigen und ändern:

localectl status
localectl set-locale LANG=de_DE.UTF-8

3. Lokalisierte Anwendungen verwenden

Viele Linux-Anwendungen unterstützen die Lokalisierung. Überprüfe in den Anwendungseinstellungen, ob Optionen zum Ändern des Datums- und Uhrzeitformats verfügbar sind.

Häufige Probleme

  • Fehlende Gebietsschemaunterstützung: Einige Gebietsschemata werden möglicherweise nicht von deinem System oder deinen Anwendungen unterstützt.
  • Inkonsistente Formate: Unterschiedliche Anwendungen können unterschiedliche Lokalisierungseinstellungen verwenden, was zu inkonsistenten Datums- und Uhrzeitformaten führen kann.
  • Kompatibilitätsprobleme: Die Lokalisierung von Datums- und Uhrzeitformaten kann Probleme bei der Interaktion mit Systemen oder Anwendungen verursachen, die andere Formate verwenden.

Anpassen des Datums- und Uhrzeitformats

Wenn die Standardformate für Datum und Uhrzeit deinen Anforderungen nicht entsprechen, kannst du sie an deine Bedürfnisse anpassen.

Lokalisieren des Datums- und Uhrzeitformats

Du kannst das Datums- und Uhrzeitformat gemäß deinem lokalen Standard lokalisieren. Dies bedeutet, dass Datum und Uhrzeit entsprechend den Regeln deines Gebietsschemas angezeigt werden, z. B. mit dem richtigen Datums- und Zeitformat, den lokalen Namen der Monate und Wochentage und der lokalen Zeitzone.

Um das Datums- und Uhrzeitformat zu lokalisieren, setze die Umgebungsvariable LC_TIME auf den entsprechenden Gebietsschemacode. Beispiel:

export LC_TIME=de_DE.UTF-8

Angepasste Datumsformatzeichenfolgen verwenden

Du kannst auch benutzerdefinierte Datumsformatzeichenfolgen verwenden, um Datum und Uhrzeit in einem bestimmten Format anzuzeigen. Die Syntax lautet:

date +%<Formatzeichenfolge>

Hier sind einige gängige Formatzeichenfolgen:

  • %Y: Jahr (z. B. 2023)
  • %m: Monat (z. B. 03)
  • %d: Tag (z. B. 15)
  • %H: Stunde (24-Stunden-Format, z. B. 14)
  • %M: Minute (z. B. 05)
  • %S: Sekunde (z. B. 09)

Beispiel:

date +%d.%m.%Y

Ausgabe:

15.03.2023

strftime zum Formatieren von Datum und Uhrzeit verwenden

Die Funktion strftime aus der Bibliothek libc bietet eine flexible Möglichkeit zum Formatieren von Datum und Uhrzeit. Sie nimmt einen Formatstring als Argument, der die Formatierungsregeln angibt, ähnlich wie bei date.

Hier ist ein Beispiel:

strftime "%A, %d %B %Y"

Ausgabe:

Mittwoch, 15. März 2023

Zusätzliche Anpassungen

Zusätzlich zu den oben genannten Methoden gibt es weitere Möglichkeiten zum Anpassen des Datums- und Uhrzeitformats, z. B.:

  • Verwendung von UTC-Zeit (Coordinated Universal Time) durch Setzen der Umgebungsvariable TZ auf UTC
  • Verwenden von Zeitzoneninformationen aus einer Zeitzonendatenbank wie TZ Database
  • Anpassen der Datums- und Uhrzeiteinstellungen in Desktop-Umgebungen wie GNOME oder KDE

Datumskonvertierungen vornehmen

Dateien, Datenbanken und APIs verwenden häufig unterschiedliche Datumsformate. Daher wirst du wahrscheinlich irgendwann auf die Notwendigkeit stoßen, Datumsangaben zwischen verschiedenen Formaten zu konvertieren.

Von einem Format in ein anderes konvertieren

Angenommen, du hast ein Datum im Format "JJJJ-MM-TT" und möchtest es in das Format "TT/MM/JJJJ" konvertieren. In Bash kannst du dies mithilfe der Befehle date und tr erreichen:

datum="2023-08-15"
konvertiertes_datum=$(echo "$datum" | tr '-' '/')
echo "$konvertiertes_datum"

Zeitzonen konvertieren

In manchen Fällen musst du Datum und Uhrzeit möglicherweise zwischen verschiedenen Zeitzonen konvertieren. Das Dienstprogramm tzconvert kann für diesen Zweck verwendet werden:

# Konvertiere von UTC nach PST
datum_utc="2023-08-15 12:00:00 UTC"
datum_pst=$(tzconvert "$datum_utc" PST)
echo "$datum_pst"

Datumsangaben in Sekunden konvertieren

Manchmal ist es hilfreich, Datumsangaben in Sekunden seit Epoche (1. Januar 1970) darzustellen. Dies kann mit dem Befehl date mit der Option +%s erreicht werden:

datum="2023-08-15 12:00:00"
sekunden=$(date -d "$datum" +%s)
echo "$sekunden"

Aus Sekunden Datumsangaben generieren

Umgekehrt kannst du mit Hilfe der Option -d des Befehls date aus einer Anzahl von Sekunden seit Epoche eine Datumsangabe erstellen:

sekunden=1660550400
datum=$(date -d @$sekunden)
echo "$datum"

Ressourcen

Häufige Probleme mit Datumsformaten in Linux

Bei der Arbeit mit Datumsformaten in Linux können folgende Probleme auftreten:

Umwandlungsfehler

  • Zeitüberschreitungen: Bei der Konvertierung von Datumsangaben, die einen bestimmten Bereich überschreiten, können Zeitüberschreitungen auftreten. Stelle sicher, dass die Datumsangaben innerhalb des gültigen Bereichs für den verwendeten Datentyp liegen.
  • Datumswert außerhalb des gültigen Bereichs: Wenn ein Datumswert außerhalb des gültigen Bereichs liegt (z. B. ein negativer Zeitstempel), kann die Konvertierung fehlschlagen. Überprüfe die Datumsangaben, bevor du sie konvertierst.

Inkompatible Formate

  • Unterschiedliche Datumsformate: Linux verwendet mehrere Datumsformate. Stelle sicher, dass du das richtige Format für deine Anwendung verwendest.
  • Lokale Einstellungen: Datumsformate können je nach den lokalen Einstellungen variieren. Berücksichtige die Lokalisierungseinstellungen bei der Arbeit mit Datumsangaben.

Zeitzonenprobleme

  • Falsche Zeitzone: Wenn die Zeitzone nicht korrekt eingestellt ist, können Datumsangaben falsch angezeigt oder konvertiert werden. Überprüfe die Zeitzoneneinstellungen und stelle sicher, dass sie auf den richtigen Wert eingestellt sind.
  • Sommerzeit: Die Sommerzeit kann Datumsangaben beeinflussen, insbesondere in Bezug auf Zeitverschiebungen. Berücksichtige die Sommerzeit bei der Arbeit mit Datumsangaben.

Formatierungsprobleme

  • Falsche Formatierungzeichenfolgen: Formatierungzeichenfolgen müssen korrekt formatiert sein, um das gewünschte Datumsformat zu erzeugen. Überprüfe die Formatierungzeichenfolgen sorgfältig, um sicherzustellen, dass sie gültig sind.
  • Unangemessene Formatierung für die Anwendung: Die gewählte Formatierung kann für die spezifische Anwendung ungeeignet sein. Wähle ein Format, das für die beabsichtigte Verwendung geeignet ist.

Sonderfälle

  • Leerzeichen in Datumszeichenfolgen: Leerzeichen in Datumszeichenfolgen können zu Problemen bei der Konvertierung oder Formatierung führen. Entferne alle Leerzeichen aus den Datumszeichenfolgen.
  • Datumsangaben im Julianischen Kalender: Bei der Arbeit mit Datumsangaben im Julianischen Kalender sind möglicherweise zusätzliche Konvertierungen erforderlich. Verwende Hilfsbibliotheken oder Tools, die die Konvertierung zwischen dem Julianischen und dem Gregorianischen Kalender unterstützen.

Folge uns

Neue Posts

Beliebte Posts