chrono pour Rust : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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.

Recommendations