Neue Rust-Bibliothek bietet einfache und sichere Datums- und Zeitfunktionen

Die neue Rust-Bibliothek Jiff vereinfacht den Umgang mit Datum und Zeit unter Rust, inklusive internationaler Zeitzonen und der Sommerzeit.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen

(Bild: iX/mit KI)

Lesezeit: 2 Min.

Jiff, eine neue Datetime-Bibliothek für Rust, vereinfacht und beschleunigt die Arbeit mit Datum und Uhrzeit. Der Fokus von Jiff liegt auf sicherer, unmissverständlicher Nutzung von Datums- und Zeittypen sowie einer hohen Performance.

Die Bibliothek liefert laut Aussagen des Initiators BurntSushi "Daytime Primitives" und unterstützt die internationale Zeitzonendatenbank sowie Sommer- (DST, Daylight Saving Time) und Winterzeit. Sie bietet Funktionen für Rundung, Formatierung und Parsing. Auf Wunsch lässt sich Serde integrieren, um Formate zu serialisieren. Als Vorbild für Jiff dient die Temporal-Bibliothek für JavaScript.

Jiff unterstützt Unix, wo sich die Zeitzonentabelle unter /usr/share/zoneinfo findet, und Windows, bei dem Jiff eine eigene Zonendatenbank integriert. Um die Systemzeit festzustellen, liest Jiff /etc/localtime (Unix) beziehungsweise GetDynamicTimeZoneInformation (Windows). Der Autor hofft darauf, dass weitere Plattformen folgen, sagt aber, dass er hier auf Contributoren angewiesen ist. Sein primäres Ziel ist, "Jiff so schnell wie möglich auf einen stabilen 1.0-Stand zu bringen. Der Grund dafür ist, dass andere sich auf Jiff als eine öffentliche Abhängigkeit verlassen können …"

Die heise-Konferenz zu Rust

Am 5. November findet die betterCode() Rust 2024 statt. Die vierte Auflage der von iX und dpunkt.verlag ausgerichteten Online-Konferenz hat das Thema Embedded-Entwicklung im Blick. Die betterCode() Rust 2024 zeigt, wie man mit Rust für Mikrocontroller entwickelt, welche Vorteile die Sprache gerade für sicherheitskritische Systeme hat und wie man unvermeidbare unsafe-Codeabschnitte möglichst sicher integriert.

Das Programm der Konferenz bietet Vorträge zu folgenden Themen:

  • Embedded Development mit Rust: Sicherheit und Leistung vereint
  • Asynchrones Rust: Effizientere Embedded-Entwicklung
  • Unsafe for Work
  • Zwischen Mensch und Maschine: Embedded UI
  • Rust im Automotive-Bereich
  • Safe and Open: Rust and RISC-V

Tickets für die Konferenz sind bis zum 8. Oktober zum Frühbucherpreis von 229 Euro (alle Preise zzgl. MwSt.) verfügbar.

Das folgende Beispiel zeigt, wie Entwicklerinnen und Entwickler einen typischen RFC-3339-Zeitstempel parsen, in eine zonenabhängige Datumszeit umwandeln, ihm eine Zeitspanne hinzufügen und ihn am Schluss verlustfrei ausgeben:

use jiff::{Timestamp, ToSpan};

fn main() -> Result<(), jiff::Error> {
    let time: Timestamp = "2024-07-11T01:14:00Z".parse()?;
    let zoned = time.intz("America/New_York")?.checked_add(1.month().hours(2))?;
    assert_eq!(zoned.to_string(), "2024-08-10T23:14:00-04:00[America/New_York]");
    // Or, if you want an RFC3339 formatted string:
    assert_eq!(zoned.timestamp().to_string(), "2024-08-11T03:14:00Z");
    Ok(())
}

Anwenderinnen und Anwender finden Jiff auf Crates.io und fügen es mit cargo add jiff der Cargo.toml hinzu. Es steht unter MIT- und der Unlicence. Die mindestens erforderliche Rust-Version ist 1.70.0. Die GitHub-Seite von BurntSushi dokumentiert auch einen Vergleich mit anderen Rust-Zeitfunktionen.

(who)