Comment calculer la différence entre deux dates en C# : nombre de jours

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

Combien de jours se sont écoulés ? Résolvons le problème éternel en C#

\n\n

Imaginez : vous développez une application de gestion des congés, un planificateur de tâches ou vous voulez simplement savoir combien de jours il reste avant le Nouvel An. Et là se pose la question classique : « Comment calculer la différence entre deux dates en C# ? ». Cette requête est l'une des plus populaires sur Stack Overflow, et pour cause. Travailler avec les dates est une base que tout développeur doit connaître.

\n\n

Dans cet article, nous ne donnerons pas simplement une réponse sèche. Nous allons tout détailler avec des exemples concrets, montrer les pièges à éviter et vous apprendre à obtenir le nombre de jours (et bien plus) entre deux moments donnés. C'est parti !

\n\n

La méthode la plus simple : soustraire une date d'une autre

\n\n

En C#, pour travailler avec les dates et les heures, il existe la puissante structure DateTime. Le secret principal est que si vous soustrayez un objet DateTime d'un autre, vous n'obtenez pas un nombre, mais un objet spécial — TimeSpan. C'est lui qui stocke la différence.

\n\n

Exemple de base : différence en jours entre deux dates spécifiques

\n\n

Supposons que vous vouliez savoir combien de jours se sont écoulés entre le 1er mars 2024 et le 10 mai 2024.

\n\n
using System;\n\nclass Program\n{\n    static void Main()\n    {\n        // Créons deux dates\n        DateTime startDate = new DateTime(2024, 3, 1);\n        DateTime endDate = new DateTime(2024, 5, 10);\n\n        // Calculons la différence\n        TimeSpan difference = endDate - startDate;\n\n        // Obtenons le nombre de jours entiers\n        int days = difference.Days;\n\n        Console.WriteLine($"Différence en jours : {days}");\n        // Affichage : Différence en jours : 70\n    }\n}\n
\n\n

Tout est simple, n'est-ce pas ? L'opérateur - est surchargé pour DateTime et retourne un TimeSpan. La propriété .Days retourne le nombre entier de jours (sans tenir compte des heures, minutes et secondes).

\n\n

Calculer la différence avec « aujourd'hui »

\n\n

Il est souvent nécessaire de calculer combien de jours se sont écoulés depuis un événement jusqu'au moment présent. Pour cela, on utilise DateTime.Now ou DateTime.Today.

\n\n
DateTime today = DateTime.Today; // Seulement la date, heure 00:00\nDateTime someDay = new DateTime(2025, 1, 1); // 1er janvier 2025\n\nTimeSpan diff = someDay - today;\n\nConsole.WriteLine($"Il reste {diff.Days} jours avant le Nouvel An");\n
\n\n

Notez que DateTime.Today retourne la date actuelle avec l'heure réglée à 00:00:00. C'est pratique si les heures et les minutes ne vous intéressent pas.

\n\n

Et si vous avez besoin de plus que de simples jours ?

\n\n

La structure TimeSpan ne se limite pas à .Days. Elle possède d'autres propriétés utiles qui vous serviront si vous souhaitez étendre les fonctionnalités.

\n\n
    \n
  • .Days — le nombre de jours entiers.
  • \n
  • .Hours — les heures (de 0 à 23).
  • \n
  • .Minutes — les minutes.
  • \n
  • .Seconds — les secondes.
  • \n
  • .TotalDays — le nombre total de jours sous forme de nombre décimal (par exemple, 70.5).
  • \n
  • .TotalHours — le nombre total d'heures.
  • \n
\n\n

Exemple avec TotalDays

\n\n

Imaginez que la différence entre les dates soit exactement de 36 heures. La propriété .Days affichera 1 (car c'est un jour entier et 12 heures). Tandis que .TotalDays affichera 1.5.

\n\n
DateTime start = new DateTime(2024, 1, 1, 0, 0, 0);\nDateTime end = new DateTime(2024, 1, 2, 12, 0, 0); // 1er janvier + 1 jour et 12 heures\n\nTimeSpan span = end - start;\n\nConsole.WriteLine($"Jours (entiers) : {span.Days}");       // 1\nConsole.WriteLine($"Total des jours : {span.TotalDays}");    // 1.5\n
\n\n

Si votre objectif est simplement de connaître le nombre de jours complets, utilisez .Days. Si vous avez besoin d'une valeur précise avec des fractions, prenez

Blogs

Book Recommendations