Rust Snippets

Rust-Unix-Timestamp-Snippets

Rust-Beispiele für aktuelle Unix-Sekunden und -Millisekunden, chrono-basiertes Formatieren und das Umwandeln von Epoch-Werten in lesbare UTC-Strings.

Current Unix timestamp (seconds)
use std::time::{SystemTime, UNIX_EPOCH};

let ts = SystemTime::now()
    .duration_since(UNIX_EPOCH)
    .unwrap()
    .as_secs();
Current Unix timestamp (milliseconds)
use std::time::{SystemTime, UNIX_EPOCH};

let ms = SystemTime::now()
    .duration_since(UNIX_EPOCH)
    .unwrap()
    .as_millis();
With the chrono crate
// Cargo.toml: chrono = "0.4"
use chrono::Utc;

Utc::now().timestamp()         // seconds
Utc::now().timestamp_millis()  // milliseconds
Format with chrono
use chrono::{DateTime, TimeZone, Utc};

let dt: DateTime<Utc> = Utc.timestamp_opt(1700000000, 0).unwrap();
println!("{}", dt.to_rfc3339());
println!("{}", dt.format("%Y-%m-%d %H:%M:%S"));

Grundlagen zu Rust-Zeitstempeln

Die Standardbibliothek stellt SystemTime und UNIX_EPOCH für abhängigkeitsfreie Zeitstempelberechnungen bereit. duration_since(UNIX_EPOCH) kann als Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden gelesen werden.

Zeitstempel in Rust formatieren

Für menschenlesbare Daten verwenden viele Rust-Projekte das chrono-Crate. Wandle Epoch-Sekunden in ein UTC-DateTime um und formatiere dann als RFC3339 oder als eigenen String für Logs und Benutzeroberflächen.

Hinweise für den Produktiveinsatz von Rust

Rusts Standardbibliothek reicht aus, um Dauern zu messen und Unix-Zeit zu lesen, während Crates wie chrono oder time besser für Kalenderformatierung sind. Halte fehlbare Umwandlungen nahe an der Eingabeverarbeitung, denn externe Zeitstempel können negativ, zu groß oder in der falschen Einheit angegeben sein.

  • Verwende as_secs() für Standard-Unix-Sekunden aus SystemTime
  • Verwende as_millis() für JavaScript-kompatible Zeitstempel
  • Verwende chrono oder time, wenn du Parsing, zeitzonenbewusste Formatierung oder RFC3339-Ausgabe brauchst
  • Validiere die Einheit externer Zeitstempel, bevor du sie in typisierten Structs speicherst

FAQ

Kann SystemTime Daten vor 1970 verarbeiten?
SystemTime kann Zeiten um die Unix-Epoch herum darstellen, aber duration_since(UNIX_EPOCH) gibt für frühere Zeitpunkte einen Fehler zurück. Behandle diesen Fall, wenn externe Zeitstempel negativ sein können.
Brauche ich chrono für jeden Zeitstempel?
Nein. Die Standardbibliothek reicht für aktuelle Unix-Sekunden und -Millisekunden. Verwende chrono oder time, wenn du Parsing, Formatierung oder Kalenderlogik brauchst.
Wie überprüfe ich Rust-Zeitstempel-Einheiten?
Wandle einen Beispielwert mit chrono oder time in RFC3339 um und bestätige dann, dass er dem API- oder Datenbankvertrag entspricht, bevor du das Feld als Sekunden oder Millisekunden akzeptierst.