Travailler avec les dates et l'heure en Rust : guide complet

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

Travailler avec les dates et l'heure en Rust : de A à Z

\n\n

La manipulation des dates et de l'heure est l'une des tâches clés dans le développement de toute application : des services web aux systèmes de journalisation. En Rust, réputé pour sa sécurité et ses performances, la gestion des dates est implémentée via la puissante bibliothèque chrono. Dans cet article, nous aborderons tous les aspects de la manipulation des dates et de l'heure : des opérations de base aux manipulations complexes avec les fuseaux horaires.

\n\n

1. Installation et configuration de la bibliothèque chrono

\n\n

La bibliothèque chrono est la norme de facto pour travailler avec les dates et l'heure en Rust. Elle fournit un ensemble complet d'outils : des objets date simples aux types complexes prenant en compte les fuseaux horaires.

\n\n

Pour commencer, ajoutez la dépendance dans le fichier Cargo.toml :

\n\n
[dependencies]\nchrono = "0.4"
\n\n

Ensuite, importez les modules nécessaires dans votre code :

\n\n
use chrono::{NaiveDate, NaiveDateTime, DateTime, Utc, Local, Duration};\nuse chrono::format::ParseError;
\n\n

2. Types de données principaux pour la manipulation des dates

\n\n

Dans chrono, il existe plusieurs types clés qui couvrent tous les besoins du développeur :

\n\n
    \n
  • NaiveDate — date sans heure ni fuseau horaire (par exemple, 2024-01-15).
  • \n
  • NaiveTime — heure sans date ni fuseau horaire (par exemple, 14:30:00).
  • \n
  • NaiveDateTime — combinaison de date et d'heure sans fuseau horaire.
  • \n
  • DateTime<Tz> — date et heure avec indication du fuseau horaire (par exemple, DateTime<Utc> ou DateTime<Local>).
  • \n
\n\n

Voyons un exemple de création d'objets pour chaque type :

\n\n
// Création d'un NaiveDate\nlet date = NaiveDate::from_ymd_opt(2024, 1, 15).unwrap();\nprintln!("Date : {}", date); // 2024-01-15\n\n// Création d'un NaiveTime\nlet time = NaiveTime::from_hms_opt(14, 30, 0).unwrap();\nprintln!("Heure : {}", time); // 14:30:00\n\n// Création d'un NaiveDateTime\nlet datetime = NaiveDateTime::new(date, time);\nprintln!("Date et heure : {}", datetime); // 2024-01-15 14:30:00\n\n// Création d'un DateTime avec le fuseau horaire UTC\nlet utc_datetime = Utc::now();\nprintln!("Heure actuelle UTC : {}", utc_datetime);\n\n// Création d'un DateTime avec le fuseau horaire local\nlet local_datetime = Local::now();\nprintln!("Heure locale actuelle : {}", local_datetime);
\n\n

3. Formatage et analyse des dates

\n\n

L'une des tâches les plus courantes est la conversion des dates en chaînes de caractères et vice versa. chrono utilise des chaînes de format similaires à strftime de C.

\n\n

Formatage d'une date en chaîne

\n\n

Pour le formatage, utilisez la méthode .format() :

\n\n
use chrono::Utc;\n\nlet now = Utc::now();\n\n// Format standard ISO 8601\nprintln!("ISO 8601 : {}", now.format("%Y-%m-%dT%H:%M:%S%z"));\n\n// Format francophone\nprintln!("Format français : {}", now.format("%d.%m.%Y %H:%M"));\n\n// Date uniquement\nprintln!("Date uniquement : {}", now.format("%A, %d %B %Y"));\n\n// Sortie :\n// ISO 8601 : 2024-01-15T14:30:00+0000\n// Format français : 15.01.2024 14:30\n// Date uniquement : Monday, 15 January 2024
\n\n

Principaux spécificateurs de format :

\n\n
    \n
  • %Y — année (4 chiffres)
  • \n
  • %m — mois (01-12)
  • \n
  • %d — jour (01-31)
  • \n
  • %H — heures (00-23)
  • \n
  • %M — minutes (00-59)
  • \n
  • %S — secondes (00-59)
  • \n
  • %z — décalage du fuseau horaire
  • \n
  • %A — nom complet du jour de la semaine
  • \n
  • %B — nom complet du mois
  • \n
\n\n

Analyse d'une chaîne en date

\n\n

Pour convertir une chaîne en date, utilisez la méthode parse_from_str() :

\n\n
use chrono::NaiveDate;\nuse chrono::format::ParseError;\n\nfn parse_date(dat                

Blogs

Book Recommendations