Travailler avec les dates et l'heure en C# : de A à Z

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

Introduction : Pourquoi travailler avec les dates et l'heure en C# est essentiel pour tout développeur

\n

Chaque développeur C# rencontre tôt ou tard la nécessité de traiter les dates et l'heure. Que ce soit pour la journalisation d'événements, le calcul de délais dans une application métier ou simplement l'affichage de la date actuelle à l'écran — une maîtrise solide de DateTime et TimeSpan est indispensable. Dans cet article, nous aborderons tous les aspects clés : de la création d'objets à la gestion des fuseaux horaires et des performances. Le contenu convient aussi bien aux débutants qu'aux programmeurs expérimentés souhaitant systématiser leurs connaissances.

\n\n

Types principaux pour travailler avec la date et l'heure dans .NET

\n

Dans .NET, il existe plusieurs types, chacun répondant à un besoin spécifique. Examinons les principaux.

\n\n

DateTime — la base de tout

\n

DateTime est une structure représentant un instant (date et heure). Elle prend en charge une plage allant du 01.01.0001 au 31.12.9999. Créer un objet peut se faire de plusieurs manières :

\n
// Date et heure actuelles\nDateTime now = DateTime.Now;\n// Date et heure actuelles en UTC\nDateTime utcNow = DateTime.UtcNow;\n// Date spécifique\nDateTime specificDate = new DateTime(2025, 3, 15);\n// Date et heure avec précision à la seconde\nDateTime withTime = new DateTime(2025, 3, 15, 14, 30, 0);\n// Date d'aujourd'hui (heure 00:00:00)\nDateTime today = DateTime.Today;
\n\n

TimeSpan — intervalles de temps

\n

TimeSpan représente un intervalle de temps (la différence entre deux dates). Il est pratique pour calculer la durée des opérations :

\n
// Création d'un intervalle\nTimeSpan interval = new TimeSpan(2, 5, 30); // 2 heures, 5 minutes, 30 secondes\n// Différence entre dates\nDateTime start = DateTime.Now;\nSystem.Threading.Thread.Sleep(1000); // simulation de travail\nDateTime end = DateTime.Now;\nTimeSpan duration = end - start;\nConsole.WriteLine($"Il s'est écoulé {duration.TotalSeconds} secondes");
\n\n

DateTimeOffset — date avec fuseau horaire

\n

Pour les applications modernes travaillant avec des utilisateurs de différentes régions, DateTimeOffset est crucial. Il stocke la date et l'heure avec le décalage par rapport à UTC :

\n
// Heure actuelle avec décalage local\nDateTimeOffset localOffset = DateTimeOffset.Now;\n// Heure avec un décalage spécifique\nDateTimeOffset customOffset = new DateTimeOffset(2025, 3, 15, 12, 0, 0, TimeSpan.FromHours(3));\n// Conversion en UTC\nDateTime utc = localOffset.UtcDateTime;
\n\n

Formatage et analyse des dates

\n

L'affichage correct des dates à l'utilisateur et la lecture des données à partir de chaînes sont des compétences obligatoires.

\n\n

Formatage : ToString() et modèles personnalisés

\n

La méthode ToString() accepte une chaîne de format. Les formats standards les plus populaires :

\n
    \n
  • "d" — date courte (15.03.2025)
  • \n
  • "D" — date longue (15 mars 2025)
  • \n
  • "t" — heure courte (14:30)
  • \n
  • "T" — heure longue (14:30:00)
  • \n
  • "g" — format général date/heure (15.03.2025 14:30)
  • \n
\n

Exemples de formatage personnalisé :

\n
DateTime dt = new DateTime(2025, 3, 15, 14, 30, 45);\nConsole.WriteLine(dt.ToString("yyyy-MM-dd")); // 2025-03-15\nConsole.WriteLine(dt.ToString("dd.MM.yyyy HH:mm")); // 15.03.2025 14:30\nConsole.WriteLine(dt.ToString("dddd, MMMM yyyy")); // samedi, mars 2025 (dépend de la culture)
\n\n

Analyse : conversion d'une chaîne en date

\n

Pour une analyse fiable, utilisez DateTime.TryParse ou DateTime.ParseExact :

\n
string dateString = "15.03.2025";\nif (DateTime.TryParse(dateString, out DateTime result))\n{\n    Console.WriteLine($"Succès : {result}");\n}\nelse\n{\n    Console.WriteLine("Erreur d'analyse");\n}\n\n// Analyse précise avec indication du format\nstring exactString = "2025-03-15 14:30:00";\nDateTime parsed = DateTime.ParseExact(exactString, "yyyy-MM-dd HH:mm                

Blogs

Book Recommendations