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
DateTimereprésente un moment,TimeSpanreprésente un intervalle.NowetUtcNowpermettent d’obtenir l’heure actuelle.AddDays,AddMonths,AddYearspermettent de manipuler les dates.- La différence entre deux dates est représentée par un
TimeSpan. - Les comparaisons se font avec
>,<,==ouCompare. ToStringpermet d’afficher les dates dans des formats personnalisés.