Bibliothèque chrono pour Rust : guide complet pour gérer les dates et heures
1. Qu'est-ce que chrono et pourquoi l'utiliser ?
La bibliothèque chrono est la référence de facto pour la manipulation des dates et heures dans l'écosystème Rust. Elle offre une API puissante, type-safe et ergonomique pour l'analyse, le formatage, l'arithmétique et la manipulation des horodatages. Contrairement à la bibliothèque standard de Rust, qui ne propose que des fonctionnalités basiques via std::time (limitée aux durées et à l'heure système), chrono couvre pratiquement tous les besoins d'un développeur : de la gestion des fuseaux horaires aux calculs calendaires complexes.
Pourquoi en avez-vous besoin ? Si vous développez une application qui doit traiter des dates de naissance, journaliser des événements avec une précision nanoseconde, planifier des tâches ou travailler avec des fuseaux horaires internationaux, chrono est indispensable. Elle prend en charge les formats ISO 8601, RFC 2822, RFC 3339, et permet de créer vos propres formateurs. Grâce au système de types strict de Rust, chrono vous aide à éviter les erreurs liées aux dates invalides (comme le 30 février) ou à la confusion entre UTC et l'heure locale.
La bibliothèque est activement maintenue par la communauté, dispose d'une excellente documentation et est utilisée dans des milliers de projets, y compris des projets populaires comme tokio, actix-web et diesel. La version 0.4.x est stable et recommandée pour une utilisation en production.
2. Installation
Pour ajouter chrono à votre projet Rust, utilisez le gestionnaire de paquets Cargo. Exécutez dans le terminal, à la racine de votre projet :
cargo add chrono
Ou ajoutez manuellement la dépendance dans le fichier Cargo.toml :
[dependencies]
chrono = "0.4"
Ensuite, exécutez cargo build pour télécharger la bibliothèque et ses dépendances. Pour la gestion des fuseaux horaires (par exemple, pour analyser les noms de villes), vous devrez peut-être activer la fonctionnalité serde ou clock :
[dependencies]
chrono = { version = "0.4", features = ["serde"] }
3. Démarrage rapide — exemple minimal fonctionnel
Créez un fichier main.rs et insérez le code suivant :
use chrono::{Local, Utc, DateTime, Duration};
fn main() {
// Heure actuelle en UTC
let utc_now: DateTime = Utc::now();
println!("Heure actuelle UTC : {}", utc_now);
// Heure locale actuelle
let local_now: DateTime = Local::now();
println!("Heure locale actuelle : {}", local_now);
// Formatage de la date
println!("Date formatée : {}", local_now.format("%Y-%m-%d %H:%M:%S"));
// Arithmétique : ajout de 2 jours
let future = utc_now + Duration::days(2);
println!("Dans 2 jours (UTC) : {}", future);
}
Exécutez le programme avec la commande cargo run. Vous verrez l'heure actuelle en UTC, l'heure locale, une chaîne formatée et la date dans deux jours.
4. Méthodes et fonctions principales
Voici 8 méthodes et types clés de la bibliothèque chrono. Pour chacun, la signature, la description et un exemple de code sont fournis.
4.1. Utc::now()
Signature : pub fn now() -> DateTime<Utc>
Description : Renvoie l'instant présent dans le fuseau horaire UTC. C'est la méthode la plus sûre pour obtenir un horodatage, car elle ne dépend pas des paramètres système de fuseau horaire.
use chrono::Utc;
fn main() {
let now = Utc::now();
println!("Heure actuelle en UTC : {}", now);
// Affiche : 2025-03-15 14:30:00.123456 UTC
}
4.2. Local::now()
Signature : pub fn now() -> DateTime<Local>
Description : Renvoie l'instant présent dans le fuseau horaire local de la machine.
Aussi dans la bibliothèque
Jetons JWT en Swift : guide complet pour travailler avec les JSON Web Tokens
MongoDB.Driver C# (.NET) : guide complet avec exemples
Génération de rapports PDF en PHP : aperçu des bibliothèques et exemples
Mise en cache en Swift (iOS/macOS) : Redis, NSCache et Core Data
Génération de rapports PDF en Java : bibliothèques et exemples