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.
use std::time::{SystemTime, UNIX_EPOCH};
let ts = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs();use std::time::{SystemTime, UNIX_EPOCH};
let ms = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis();// Cargo.toml: chrono = "0.4"
use chrono::Utc;
Utc::now().timestamp() // seconds
Utc::now().timestamp_millis() // millisecondsuse 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.