Chargement...

Opérations DateTime & TimeSpan en C#

Apprenez à utiliser DateTime et TimeSpan en C# pour gérer les opérations de date et d’heure comme la comparaison et le formatage.

En C#, les structures DateTime et TimeSpan sont utilisées pour travailler avec les dates et les heures. DateTime représente un moment précis, tandis que TimeSpan représente la différence entre deux dates, c’est-à-dire un intervalle de temps. Grâce à ces structures, il est facile d’effectuer des comparaisons de dates, des ajouts/soustractions ou encore des formatages.


Qu’est-ce que DateTime ?

La structure DateTime représente une date et une heure spécifiques.


DateTime maintenant = DateTime.Now;
Console.WriteLine(maintenant);        // Date et heure actuelles
Console.WriteLine(DateTime.UtcNow);   // Temps universel

Propriétés de base de DateTime

Il est possible d’extraire séparément les informations de date et d’heure :


DateTime date = new DateTime(2025, 9, 9, 14, 30, 0);

Console.WriteLine(date.Year);   // 2025
Console.WriteLine(date.Month);  // 9
Console.WriteLine(date.Day);    // 9
Console.WriteLine(date.Hour);   // 14
Console.WriteLine(date.Minute); // 30

Console.WriteLine(date.ToShortDateString()); // 09/09/2025
Console.WriteLine(date.ToLongDateString());  // mardi 9 septembre 2025

Opérations avec DateTime

Les méthodes Add permettent d’ajouter ou de soustraire des jours, des mois ou des années.


DateTime aujourdHui = DateTime.Now;

Console.WriteLine(aujourdHui.AddDays(5));    // 5 jours plus tard
Console.WriteLine(aujourdHui.AddMonths(-1)); // 1 mois avant

DateTime futur = aujourdHui.AddYears(1);
Console.WriteLine(futur); // 1 an plus tard

// Différence entre deux dates
DateTime naissance = new DateTime(2000, 1, 1);
TimeSpan difference = aujourdHui - naissance;

Console.WriteLine($"Nombre total de jours : {difference.Days}");

Qu’est-ce que TimeSpan ?

TimeSpan représente un intervalle de temps.


TimeSpan duree = new TimeSpan(2, 30, 0); // 2 heures 30 minutes
Console.WriteLine(duree.TotalMinutes);   // 150 minutes

Utiliser DateTime et TimeSpan ensemble

On peut ajouter un TimeSpan à un DateTime pour créer une nouvelle date.


DateTime maintenant = DateTime.Now;
TimeSpan troisHeures = new TimeSpan(3, 0, 0);

DateTime nouvelleDate = maintenant + troisHeures;
Console.WriteLine(nouvelleDate);

Comparaison de dates

Les dates peuvent être comparées avec >, <, == ou avec la méthode Compare.


DateTime d1 = new DateTime(2025, 1, 1);
DateTime d2 = new DateTime(2025, 12, 31);

Console.WriteLine(d1 < d2); // true
Console.WriteLine(DateTime.Compare(d1, d2)); // -1 (d1 est antérieure)

Vérifier si une date appartient à une année ou un mois donné :


DateTime date = new DateTime(2025, 9, 9);

bool memeAnnee = (date.Year == 2025);  // true
bool memeMois = (date.Month == 9);     // true

Formatage des dates

La méthode ToString permet d’appliquer des formats personnalisés.


DateTime maintenant = DateTime.Now;

Console.WriteLine(maintenant.ToString("dd.MM.yyyy"));       // 09.09.2025
Console.WriteLine(maintenant.ToString("dd.MM.yy"));         // 09.09.25
Console.WriteLine(maintenant.ToString("yyyy-MM-dd HH:mm")); // 2025-09-09 14:45

Exemple : calcul de la durée d’un projet et du tarif journalier


Console.Write("Entrez la date de début du projet (yyyy-MM-dd) : ");
DateTime debut = DateTime.Parse(Console.ReadLine());

Console.Write("Entrez la date de fin du projet (yyyy-MM-dd) : ");
DateTime fin = DateTime.Parse(Console.ReadLine());

if (fin <= debut)
{
    Console.WriteLine("Erreur : la date de fin doit être postérieure à la date de début.");
}
else
{
    Console.Write("Entrez le prix total du projet : ");
    decimal prix = decimal.Parse(Console.ReadLine());

    TimeSpan duree = fin - debut;
    int nbJours = duree.Days;

    decimal tarifJour = prix / nbJours;

    Console.WriteLine($"Durée du projet : {nbJours} jours");
    Console.WriteLine($"Tarif journalier : {tarifJour:0.00} EUR");
}

TL;DR

  • DateTime représente un moment, TimeSpan représente un intervalle.
  • Now et UtcNow permettent d’obtenir l’heure actuelle.
  • AddDays, AddMonths, AddYears permettent de manipuler les dates.
  • La différence entre deux dates est représentée par un TimeSpan.
  • Les comparaisons se font avec >, <, == ou Compare.
  • ToString permet d’afficher les dates dans des formats personnalisés.