Rust Snippets

Extraits de timestamp Unix en Rust

Exemples Rust pour les secondes et millisecondes Unix actuelles, le formatage basé sur chrono et la conversion de valeurs epoch en chaînes UTC lisibles.

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"));

Bases des horodatages en Rust

La bibliothèque standard expose SystemTime et UNIX_EPOCH pour des calculs d'horodatage sans dépendances. duration_since(UNIX_EPOCH) peut être lu en secondes, millisecondes, microsecondes ou nanosecondes.

Formater les horodatages en Rust

Pour des dates lisibles, beaucoup de projets Rust utilisent le crate chrono. Convertissez les secondes epoch en un DateTime UTC, puis formatez en RFC3339 ou en chaîne personnalisée pour les journaux et les interfaces utilisateur.

Notes de production pour Rust

La bibliothèque standard de Rust suffit pour mesurer des durées et lire le temps Unix, tandis que des crates comme chrono ou time conviennent mieux au formatage calendaire. Gardez la conversion faillible près de la gestion des entrées, car les horodatages externes peuvent être négatifs, trop grands ou exprimés dans la mauvaise unité.

  • Utilisez as_secs() pour des secondes Unix standard depuis SystemTime
  • Utilisez as_millis() pour des horodatages compatibles JavaScript
  • Utilisez chrono ou time quand vous avez besoin d'analyse, de formatage tenant compte du fuseau ou de sortie RFC3339
  • Validez l'unité des horodatages externes avant de les stocker dans des structs typées

FAQ

SystemTime peut-il gérer les dates antérieures à 1970 ?
SystemTime peut représenter des instants autour de l'epoch Unix, mais duration_since(UNIX_EPOCH) renvoie une erreur pour les instants antérieurs. Gérez ce cas si des horodatages externes peuvent être négatifs.
Ai-je besoin de chrono pour chaque horodatage ?
Non. La bibliothèque standard suffit pour les secondes et millisecondes Unix actuelles. Utilisez chrono ou time quand vous avez besoin d'analyse, de formatage ou de logique de calendrier.
Comment vérifier les unités d'horodatage en Rust ?
Convertissez un échantillon en RFC3339 avec chrono ou time, puis confirmez qu'il correspond au contrat de l'API ou de la base de données avant d'accepter le champ comme des secondes ou des millisecondes.