Combien de jours se sont écoulés ? Résolvons le problème éternel en C#
\n\nImaginez : 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\nDans 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\nLa méthode la plus simple : soustraire une date d'une autre
\n\nEn 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.
Exemple de base : différence en jours entre deux dates spécifiques
\n\nSupposons que vous vouliez savoir combien de jours se sont écoulés entre le 1er mars 2024 et le 10 mai 2024.
\n\nusing 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\nTout 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).
Calculer la différence avec « aujourd'hui »
\n\nIl 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.
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\nNotez 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.
Et si vous avez besoin de plus que de simples jours ?
\n\nLa 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
.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
Exemple avec TotalDays
\n\nImaginez 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.
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\nSi 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
Lire aussi
GraphQL vs REST en C++ : lequel choisir pour les API haute performance
Développeur Go : salaire, perspectives et avenir en 2024
Quand les destructeurs virtuels sont nécessaires en C++ : analyse en 2025
Meilleurs outils développeur PHP : IDE, linters et formateurs
const à la fin d'une méthode C++ : ce que cela signifie et comment l'utiliser en 2025