Travail avec les dates en C# (.NET) : outils intégrés et bibliothèques

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

Travail avec les dates en C# (.NET) : outils intégrés et bibliothèques populaires



Le travail avec les dates et l'heure est l'une des tâches clés dans tout développement sérieux. Dans l'écosystème C# (.NET), il existe à la fois des types intégrés puissants (DateTime, DateTimeOffset, TimeSpan) et des bibliothèques tierces qui simplifient les opérations complexes — la gestion des fuseaux horaires, la représentation lisible par l'homme, l'analyse de formats non standard. Dans cet article, nous allons détailler les principaux outils pour travailler avec les dates en C#.



Types intégrés .NET



La classe de base System.DateTime fournit des méthodes pour la création, la comparaison, l'arithmétique et le formatage des dates. Elle prend en charge une plage allant du 01.01.0001 au 31.12.9999.



// Création d'une dateDateTime now = DateTime.Now;                // heure localeDateTime utcNow = DateTime.UtcNow;          // UTCDateTime specific = new DateTime(2025, 3, 15, 14, 30, 0);

// ArithmétiqueDateTime tomorrow = now.AddDays(1);TimeSpan diff = tomorrow - now;Console.WriteLine(diff.TotalHours); // 24

// Analysestring dateStr = "2025-12-31";DateTime parsed = DateTime.Parse(dateStr, CultureInfo.InvariantCulture);

// FormatageConsole.WriteLine(now.ToString("dd.MM.yyyy HH:mm")); // 15.03.2025 14:30


DateTimeOffset est une version améliorée qui stocke le décalage par rapport à UTC. Il est recommandé pour les applications travaillant avec différents fuseaux horaires.



DateTimeOffset nowOffset = DateTimeOffset.Now;Console.WriteLine(nowOffset.Offset); // +03:00 (dépend du système)


TimeSpan — pour représenter des intervalles de temps. Idéal pour mesurer la durée des opérations.



TimeSpan duration = new TimeSpan(2, 15, 30); // 2 heures 15 minutes 30 secondesConsole.WriteLine(duration.TotalMinutes);     // 135.5


Bibliothèque NodaTime



NodaTime est une bibliothèque alternative pour travailler avec les dates et l'heure, créée par Jon Skeet (auteur de livres sur C#). Elle résout de nombreux problèmes de DateTime, tels que l'ambiguïté et l'absence de typage strict des fuseaux horaires.



Installation via NuGet :

dotnet add package NodaTime


Types principaux :

  • Instant — un moment dans le temps (équivalent d'un timestamp Unix)
  • LocalDateTime — date+heure sans référence à un fuseau horaire
  • ZonedDateTime — date+heure dans un fuseau horaire spécifique
  • Duration et Period — intervalles (équivalent de TimeSpan, mais Period prend en compte les unités calendaires)


using NodaTime;

// Moment actuel en UTCInstant now = SystemClock.Instance.GetCurrentInstant();Console.WriteLine(now.ToDateTimeUtc()); // peut être converti en DateTime

// Travail avec les fuseaux horairesDateTimeZone tz = DateTimeZoneProviders.Tzdb["Europe/Moscow"];ZonedDateTime moscowTime = now.InZone(tz);Console.WriteLine(moscowTime); // 2025-03-15T17:30:00 Europe/Moscow (+03)

// Period — différence en unités calendairesLocalDate start = new LocalDate(2024, 1, 1);LocalDate end = new LocalDate(2025, 3, 15);Period period = Period.Between(start, end);Console.WriteLine($"Il s'est écoulé {period.Years} ans, {period.Months} mois, {period.Days} jours");// Il s'est écoulé 1 ans, 2 mois, 14 jours


Avantages de NodaTime : typage strict, gestion correcte des fuseaux horaires historiques, prise en charge des calendriers (islamique, hébraïque, etc.), absence d'ambiguïtés lors du changement d'heure.



Bibliothèque Humanizer



Humanizer est une bibliothèque pour « humaniser » les données, y compris les dates et les intervalles. Elle permet d'afficher les dates de manière lisible : « hier », « dans 3 heures », « il y a 2 jours ».



Installation :

dotnet add package Humanizer


Exemples d'util

Recommendations