English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Date et heure (DateTime)

C# contient la structure DateTime pour gérer les dates et les heures.

Pour utiliser les dates et heures en C#, utilisez le mot-clé new pour créer un objet de la structure DateTime. Voici la création d'un objet DateTime avec une valeur par défaut.

DateTime dt = new DateTime(); // Affecte la valeur par défaut 01/01/0001 00:00:00

Les valeurs par défaut et minimales de l'objet DateTime sont 0001Année1Mois100:00:00 (minuit). La valeur maximale peut être9999Année12Mois31Soir11:59:59

Utilisez différents constructeurs de la structure DateTime pour affecter une valeur initiale à l'objet DateTime.

//Affecte la valeur par défaut 01/01/0001 00:00:00
DateTime dt1 = new DateTime(); 
//Affecte l'année, le mois et le jour
DateTime dt2 = new DateTime(2015, 12, 31); 
//Affecte l'année, le mois, le jour, l'heure, les minutes et les secondes
DateTime dt3 = new DateTime(2015, 12, 31, 5, 10, 20);
 
//Affecte l'année, le mois, le jour, l'heure, les minutes, les secondes et le fuseau horaire UTC
DateTime dt4 = new DateTime(2015, 12, 31, 5, 10, 2, DateTimeKind.Utc);

Dans l'exemple suivant, nous spécifions l'année, le mois et le jour dans le constructeur. L'année peut être 0001à9999, le mois peut être1à12, la date peut être1à31. Toute autre valeur définie en dehors de cette plage entraînera une exception en temps d'exécution.

DateTime dt = new DateTime(2015, 12, 32); //Lève une exception : le jour est hors de la plage

Utilisez différents constructeurs DateTime pour définir la date, l'heure, le fuseau horaire, le calendrier et la régionalité.

Ticks

Les ticks sont une date et une heure, exprimée à partir de 00:00:00.000 de l'année 0000 du calendrier grégorien1Mois1Depuis le jour10Le nombre d'intervalle de 0 nanosecondes représente. Voici comment initialiser un objet DateTime avec des ticks.

DateTime dt = new DateTime(636370000000000000); 
DateTime.MinValue.Ticks;  //Valeur minimale des ticks
DateTime.MaxValue.Ticks; // Valeur maximale des ticks

Champs statiques de DateTime

La structure DateTime comprend des champs statiques, des propriétés et des méthodes. L'exemple suivant montre les champs statiques et les propriétés importants.

DateTime currentDateTime = DateTime.Now;  //Renvoie la date et l'heure actuelles
DateTime todaysDate = DateTime.Today; // Renvoie la date d'aujourd'hui
DateTime currentDateTimeUTC = DateTime.UtcNow;// Renvoie la date et l'heure UTC actuelles
DateTime maxDateTimeValue = DateTime.MaxValue; // Renvoie la valeur maximale de DateTime
DateTime minDateTimeValue = DateTime.MinValue; // Retourne la valeur minimale de DateTime

Portée de temps (TimeSpan)

TimeSpan est une structure qui représente le temps en jours, heures, minutes, secondes et millisecondes.

DateTime dt = new DateTime(2015, 12, 31);
           
TimeSpan ts = new TimeSpan(25,20:55);
 
DateTime newDate = dt.Add(ts);
Console.WriteLine(newDate);//1/1/2016 1:20:55 AM

La soustraction de deux dates donne un TimeSpan.

DateTime dt1 = new DateTime(2015, 12, 31); 
DateTime dt2 = new DateTime(2016, 2, 2);
TimeSpan result = dt2.Subtract(dt1);//33.00:00:00

Opérateurs

Surcharge des opérateurs de la structure DateTime+,-,==!=,>,<,<=,>= opérateurs, simplifiant l'addition, la soustraction et la comparaison des dates. Cela nous rend facile à traiter les dates.

DateTime dt1 = new DateTime(2015, 12, 20);
DateTime dt2 = new DateTime(2016, 12, 31, 5, 10, 20); 
TimeSpan time = new TimeSpan(10, 5, 25, 50);
Console.WriteLine(dt2 + time); // 1/10/2017matin10:36:10
Console.WriteLine(dt2 - dt1); //377.05:10:20
Console.WriteLine(dt1 == dt2); //False
Console.WriteLine(dt1 != dt2); //True
Console.WriteLine(dt1 > dt2); //False
Console.WriteLine(dt1 < dt2); //True
Console.WriteLine(dt1 >= dt2); //False
Console.WriteLine(dt1 <= dt2);//True

Convertir DateTime en String

La structure DateTime contient les méthodes suivantes pour convertir la date et l'heure en chaîne de caractères.

MéthodeDescription
ToString

Convertir la valeur DateTime en chaîne de caractères de la région actuelle dans un format spécifié.

ToShortDateString

Convertir la valeur DateTime en chaîne de caractères courte de la région actuelle (M/d/au format yyyy).

ToShortTimeString

Convertir la valeur DateTime en chaîne de caractères courte de la région actuelle (h: mm: ss).

ToLongDateString

Convertir la valeur DateTime en chaîne de caractères de date longue de la région actuelle (dddd, MMMM d, yyyy).

ToLongTimeString

Convertir la valeur DateTime en chaîne de caractères longue de la région actuelle (h:mm:ss tt).

L'exemple suivant montre comment convertir DateTime en chaîne de caractères de format différent.

var dt = DateTime.Now;
Console.WriteLine("Chaine de date actuelle de la culture: "); + dt.ToString("d"));
Console.WriteLine("MM/dd/Format yyyy: "); + dt.ToString("MM/dd/yyyy"));
Console.WriteLine("Format dddd, dd MMMM yyyy: "); + dt.ToString("dddd, dd MMMM yyyy"));
Console.WriteLine("MM/dd/yyyy h:mm tt Format: "); + dt.ToString("MM/dd/yyyy h:mm tt"));
Console.WriteLine("Format MMMM dd: "); + dt.ToString("MMMM dd"));
Console.WriteLine("Format HH:mm:ss: "); + dt.ToString("HH:mm:ss"));
Console.WriteLine("Format hh:mm tt: "); + dt.ToString("hh:mm tt"));
Console.WriteLine("Chaine de date courte: "); + dt.ToShortDateString());
Console.WriteLine("Chaine de date longue: "); + dt.ToLongDateString());
Console.WriteLine("Chaine de temps courte: "); + dt.ToShortTimeString());
Console.WriteLine("Chaine de temps longue: "); + dt.ToLongTimeString());

Convertir une chaîne en DateTime

Les méthodes Parse (), ParseExact (), TryParse () et TryParseExact () peuvent être utilisées pour convertir une chaîne de date et d'heure valide en objet DateTime.

Si la chaîne spécifiée n'est pas une représentation valable de la date et de l'heure, les méthodes Parse () et ParseExact () lèveront une exception. Par conséquent, il est recommandé d'utiliser les méthodes TryParse () ou TryParseExact (), car si la chaîne est invalide, elles renverront false.

var str = "5/12/2020";
DateTime dt;
            
var isValidDate = DateTime.TryParse(str, out dt);
if(isValidDate)
    Console.WriteLine(dt);
else
    Console.WriteLine($"{str} n'est pas une chaîne de date valide");