Arbeiten mit Datum und Uhrzeit in Rust: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Datum und Uhrzeit in Rust: Von A bis Z

\n\n

Das Arbeiten mit Datum und Uhrzeit ist eine der Kernaufgaben bei der Entwicklung jeder Anwendung: von Webdiensten bis hin zu Protokollierungssystemen. In Rust, bekannt für seine Sicherheit und Leistung, wird die Arbeit mit Datum und Uhrzeit über die leistungsstarke Bibliothek chrono realisiert. In diesem Artikel behandeln wir alle Aspekte der Arbeit mit Datum und Uhrzeit: von grundlegenden Operationen bis hin zu komplexen Manipulationen mit Zeitzonen.

\n\n

1. Installation und Konfiguration der chrono-Bibliothek

\n\n

Die Bibliothek chrono ist der De-facto-Standard für die Arbeit mit Datum und Uhrzeit in Rust. Sie bietet einen vollständigen Satz an Werkzeugen: von einfachen Datumsobjekten bis hin zu komplexen Typen unter Berücksichtigung von Zeitzonen.

\n\n

Um zu beginnen, fügen Sie die Abhängigkeit in Ihre Cargo.toml-Datei ein:

\n\n
[dependencies]\nchrono = "0.4"
\n\n

Importieren Sie anschließend die erforderlichen Module in Ihren Code:

\n\n
use chrono::{NaiveDate, NaiveDateTime, DateTime, Utc, Local, Duration};\nuse chrono::format::ParseError;
\n\n

2. Grundlegende Datentypen für die Arbeit mit Datum und Uhrzeit

\n\n

In chrono gibt es mehrere Schlüsseltypen, die alle Anforderungen von Entwicklern abdecken:

\n\n
    \n
  • NaiveDate — Datum ohne Uhrzeit und Zeitzone (z. B. 2024-01-15).
  • \n
  • NaiveTime — Uhrzeit ohne Datum und Zeitzone (z. B. 14:30:00).
  • \n
  • NaiveDateTime — Kombination von Datum und Uhrzeit ohne Zeitzone.
  • \n
  • DateTime<Tz> — Datum und Uhrzeit mit Angabe der Zeitzone (z. B. DateTime<Utc> oder DateTime<Local>).
  • \n
\n\n

Betrachten wir ein Beispiel zur Erstellung von Objekten jedes Typs:

\n\n
// Erstellen von NaiveDate\nlet date = NaiveDate::from_ymd_opt(2024, 1, 15).unwrap();\nprintln!("Datum: {}", date); // 2024-01-15\n\n// Erstellen von NaiveTime\nlet time = NaiveTime::from_hms_opt(14, 30, 0).unwrap();\nprintln!("Uhrzeit: {}", time); // 14:30:00\n\n// Erstellen von NaiveDateTime\nlet datetime = NaiveDateTime::new(date, time);\nprintln!("Datum und Uhrzeit: {}", datetime); // 2024-01-15 14:30:00\n\n// Erstellen von DateTime mit UTC-Zeitzone\nlet utc_datetime = Utc::now();\nprintln!("Aktuelle UTC-Zeit: {}", utc_datetime);\n\n// Erstellen von DateTime mit lokaler Zeitzone\nlet local_datetime = Local::now();\nprintln!("Aktuelle lokale Zeit: {}", local_datetime);
\n\n

3. Formatierung und Parsing von Datumsangaben

\n\n

Eine der häufigsten Aufgaben ist die Umwandlung von Datumsangaben in Zeichenketten und umgekehrt. chrono verwendet Formatstrings, die strftime aus C ähneln.

\n\n

Formatierung eines Datums in eine Zeichenkette

\n\n

Verwenden Sie für die Formatierung die Methode .format():

\n\n
use chrono::Utc;\n\nlet now = Utc::now();\n\n// Standardformat ISO 8601\nprintln!("ISO 8601: {}", now.format("%Y-%m-%dT%H:%M:%S%z"));\n\n// Deutsches Format\nprintln!("Deutsches Format: {}", now.format("%d.%m.%Y %H:%M"));\n\n// Nur Datum\nprintln!("Nur Datum: {}", now.format("%A, %d %B %Y"));\n\n// Ausgabe:\n// ISO 8601: 2024-01-15T14:30:00+0000\n// Deutsches Format: 15.01.2024 14:30\n// Nur Datum: Monday, 15 January 2024
\n\n

Wichtige Formatspezifizierer:

\n\n
    \n
  • %Y — Jahr (4 Ziffern)
  • \n
  • %m — Monat (01-12)
  • \n
  • %d — Tag (01-31)
  • \n
  • %H — Stunden (00-23)
  • \n
  • %M — Minuten (00-59)
  • \n
  • %S — Sekunden (00-59)
  • \n
  • %z — Zeitzonenversatz
  • \n
  • %A — Vollständiger Wochentagsname
  • \n
  • %B — Vollständiger Monatsname
  • \n
\n\n

Parsing einer Zeichenkette in ein Datum

\n\n

Verwenden Sie für die Umwandlung einer Zeichenkette in ein Datum die Methode parse_from_str():

\n\n
use chrono::NaiveDate;\nuse chrono::format::ParseError;\n\nfn parse_date(dat                

Blogs

Buchempfehlungen