Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
DateTime, structure
Représente un instant, généralement exprimé sous la forme d'une date ou d'une heure.
Assembly : mscorlib (dans mscorlib.dll)
Le type DateTime expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
DateTime(Int64) | Initialise une nouvelle instance de la structure DateTime avec le nombre de graduations spécifié. |
|
DateTime(Int64, DateTimeKind) | Initialise une nouvelle instance de la structure DateTime avec un nombre spécifié de graduations et une heure UTC ou locale. |
|
DateTime(Int32, Int32, Int32) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois et le jour spécifiés. |
|
DateTime(Int32, Int32, Int32, Calendar) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois et le jour spécifiés pour le calendrier spécifié. |
|
DateTime(Int32, Int32, Int32, Int32, Int32, Int32) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, la minute et la seconde spécifiés. |
|
DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, l'heure, la minute, la seconde, et l'heure UTC ou locale. |
|
DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, la minute et la seconde spécifiés pour le calendrier spécifié. |
|
DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, la minute, la seconde et la milliseconde spécifiés. |
|
DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, l'heure, la minute, la seconde, la milliseconde, et l'heure UTC ou locale. |
|
DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, l'heure, la minute, la seconde et la milliseconde spécifiés pour le calendrier spécifié. |
|
DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) | Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, l'heure, la minute, la seconde, la milliseconde, et l'heure UTC ou locale spécifiés pour le calendrier spécifié. |
| Nom | Description | |
|---|---|---|
|
Date | Obtient le composant "date" de cette instance. |
|
Day | Obtient le jour du mois représenté par cette instance. |
|
DayOfWeek | Obtient le jour de semaine représenté par cette instance. |
|
DayOfYear | Obtient le jour de l'année représenté par cette instance. |
|
Hour | Obtient le composant "heure" de la date représentée par cette instance. |
|
Kind | Obtient une valeur qui indique si l'heure représentée par cette instance se base sur l'heure locale, l'heure UTC, ou aucune des deux. |
|
Millisecond | Obtient le composant "millisecondes" de la date représentée par cette instance. |
|
Minute | Obtient le composant "minutes" de la date représentée par cette instance. |
|
Month | Obtient le composant "mois" de la date représentée par cette instance. |
|
Now | Obtient un objet DateTime qui a pour valeur la date et l'heure actuelles sur cet ordinateur, exprimées en temps local. |
|
Second | Obtient le composant "secondes" de la date représentée par cette instance. |
|
Ticks | Obtient le nombre de graduations représentant la date et l'heure de cette instance. |
|
TimeOfDay | Obtient l'heure de cette instance. |
|
Today | Obtient la date actuelle. |
|
UtcNow | Obtient un objet DateTime qui a pour valeur la date et l'heure actuelles sur cet ordinateur, exprimées en temps UTC. |
|
Year | Obtient le composant "année" de la date représentée par cette instance. |
| Nom | Description | |
|---|---|---|
|
Add | Retourne un nouveau DateTime qui ajoute la valeur du TimeSpan spécifié à la valeur de cette instance. |
|
AddDays | Retourne un nouveau DateTime qui ajoute le nombre de jours spécifié à la valeur de cette instance. |
|
AddHours | Retourne un nouveau DateTime qui ajoute le nombre d'heures spécifié à la valeur de cette instance. |
|
AddMilliseconds | Retourne un nouveau DateTime qui ajoute le nombre de millisecondes spécifié à la valeur de cette instance. |
|
AddMinutes | Retourne un nouveau DateTime qui ajoute le nombre de minutes spécifié à la valeur de cette instance. |
|
AddMonths | Retourne un nouveau DateTime qui ajoute le nombre de mois spécifié à la valeur de cette instance. |
|
AddSeconds | Retourne un nouveau DateTime qui ajoute le nombre de secondes spécifié à la valeur de cette instance. |
|
AddTicks | Retourne un nouveau DateTime qui ajoute le nombre de graduations spécifié à la valeur de cette instance. |
|
AddYears | Retourne un nouveau DateTime qui ajoute le nombre d'années spécifié à la valeur de cette instance. |
|
Compare | Compare deux instances de DateTime et retourne un entier qui indique si la première instance est antérieure, identique, ou ultérieure à la deuxième instance. |
|
CompareTo(DateTime) | Compare la valeur de cette instance à une valeur DateTime spécifiée et retourne un entier qui indique si cette instance est antérieure, identique ou ultérieure à la valeur DateTimespécifiée. |
|
CompareTo(Object) | Compare la valeur de cette instance à un objet spécifié qui contient une valeur DateTime spécifiée, et retourne un entier qui indique si cette instance est antérieure, identique ou ultérieure à la valeur DateTime spécifiée. |
|
DaysInMonth | Retourne le nombre de jours compris dans le mois et l'année spécifiés. |
|
Equals(DateTime) | Retourne une valeur indiquant si cette instance équivaut à l'instance de DateTime spécifiée. |
|
Equals(Object) | Retourne une valeur indiquant si cette instance est égale à un objet spécifié. (Substitue ValueType.Equals(Object).) |
|
Equals(DateTime, DateTime) | Retourne une valeur indiquant si deux instances de DateTime sont égales. |
|
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) |
|
FromBinary | Désérialise une valeur binaire de 64 bits et recrée un objet DateTime sérialisé d'origine. |
|
FromFileTime | Convertit l'heure de fichier Windows spécifiée en heure locale équivalente. |
|
FromFileTimeUtc | Convertit l'heure de fichier Windows spécifiée en heure UTC équivalente. |
|
FromOADate | Retourne un DateTime qui équivaut à la date OLE Automation spécifiée. |
|
GetDateTimeFormats() | Convertit la valeur de cette instance en toutes les représentations sous forme de chaîne prises en charge par les spécificateurs de format de date et d'heure standard. |
|
GetDateTimeFormats(Char) | Convertit la valeur de cette instance en toutes les représentations sous forme de chaîne prises en charge par le spécificateur de format de date et d'heure standard spécifié. |
|
GetDateTimeFormats(IFormatProvider) | Convertit la valeur de cette instance en toutes les représentations sous forme de chaîne prises en charge par les spécificateurs de format de date et d'heure standard spécifié et les données de format propres à la culture spécifiées. |
|
GetDateTimeFormats(Char, IFormatProvider) | Convertit la valeur de cette instance en toutes les représentations sous forme de chaîne prises en charge par le spécificateur de format de date et d'heure standard spécifié et les données de format propres à la culture. |
|
GetHashCode | Retourne le code de hachage de cette instance. (Substitue ValueType.GetHashCode().) |
|
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) |
|
GetTypeCode | Retourne le TypeCode du type valeur DateTime. |
|
IsDaylightSavingTime | Indique si cette instance de DateTime est dans la plage d'heures d'été pour le fuseau horaire actuel. |
|
IsLeapYear | Retourne une indication confirmant si l'année spécifiée est une année bissextile. |
|
MemberwiseClone | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) |
|
Parse(String) | Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en son équivalent DateTime. |
|
Parse(String, IFormatProvider) | Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en DateTime équivalent à l'aide des informations de format propres à la culture spécifiées. |
|
Parse(String, IFormatProvider, DateTimeStyles) | Convertit la chaîne représentant une date et heure en DateTime équivalent à l'aide des informations et style de format propres à la culture spécifiés. |
|
ParseExact(String, String, IFormatProvider) | Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en DateTime équivalent à l'aide des informations de format propres à la culture et au format spécifiés. Le format de la chaîne doit correspondre exactement au format spécifié. |
|
ParseExact(String, String, IFormatProvider, DateTimeStyles) | Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en DateTime équivalent à l'aide des informations et du style de format propres à la culture spécifiés. Le format de la représentation sous forme de chaîne doit correspondre exactement au format spécifié, ou une exception est levée. |
|
ParseExact(String, String[], IFormatProvider, DateTimeStyles) | Convertit la représentation sous forme de chaîne spécifiée d'une date et heure en DateTime équivalent à l'aide du tableau de formats, des informations et du style de format propres à la culture spécifiés. Le format de la représentation sous forme de chaîne doit correspondre exactement à au moins l'un des formats spécifiés, ou une exception est levée. |
|
SpecifyKind | Crée un objet DateTime qui a le même nombre de graduations que le DateTime spécifié, mais qui est désigné comme une heure locale, une heure UTC ou aucune des deux, en fonction de ce que la valeur DateTimeKind spécifiée indique. |
|
Subtract(DateTime) | Soustrait la date et l'heure spécifiées de cette instance. |
|
Subtract(TimeSpan) | Soustrait la durée spécifiée de cette instance. |
|
ToBinary | Sérialise l'objet DateTime en cours en une valeur binaire 64 bits qui pourra ensuite être utilisée pour recréer l'objet DateTime. |
|
ToFileTime | Convertit la valeur de l'objet DateTime actif en heure de fichier Windows. |
|
ToFileTimeUtc | Convertit la valeur de l'objet DateTime actif en heure de fichier Windows. |
|
ToLocalTime | Convertit la valeur de l'objet DateTime en cours en heure locale. |
|
ToLongDateString | Convertit la valeur de l'objet DateTime en cours en sa représentation sous forme de chaîne de date longue équivalente. |
|
ToLongTimeString | Convertit la valeur de l'objet DateTime en cours en sa représentation sous forme de chaîne d'heure complète équivalente. |
|
ToOADate | Convertit la valeur de cette instance en date OLE Automation équivalente. |
|
ToShortDateString | Convertit la valeur de l'objet DateTime en cours en sa représentation sous forme de chaîne de date courte équivalente. |
|
ToShortTimeString | Convertit la valeur de l'objet DateTime en cours en sa représentation sous forme de chaîne d'heure abrégée équivalente. |
|
ToString() | Convertit la valeur de l'objet DateTime en cours en sa représentation équivalente sous forme de chaîne. (Substitue ValueType.ToString().) |
|
ToString(IFormatProvider) | Convertit la valeur de l'objet DateTime actuel en sa représentation sous forme de chaîne équivalente à l'aide des informations de format propres à la culture spécifiées. |
|
ToString(String) | Convertit la valeur de l'objet DateTime actuel en sa représentation sous forme de chaîne équivalente en utilisant le format spécifié. |
|
ToString(String, IFormatProvider) | Convertit la valeur de l'objet DateTime actuel en sa représentation sous forme de chaîne équivalente à l'aide du format et des informations de format spécifiques à la culture spécifiés. |
|
ToUniversalTime | Convertit la valeur de l'objet DateTime en cours en Temps universel coordonné (UTC). |
|
TryParse(String, DateTime) | Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en son équivalent DateTime et retourne une valeur qui indique si la conversion a réussi. |
|
TryParse(String, IFormatProvider, DateTimeStyles, DateTime) | Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en son équivalent DateTime à l'aide des informations de format et du style de mise en forme propres à la culture, et retourne une valeur qui indique si la conversion a réussi. |
|
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) | Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en DateTime équivalent à l'aide des informations et du style de format propres à la culture spécifiés. Le format de la chaîne doit correspondre exactement au format spécifié. La méthode retourne une valeur qui indique si la conversion a réussi. |
|
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) | Convertit la représentation sous forme de chaîne spécifiée d'une date et heure en DateTime équivalent à l'aide du tableau de formats, des informations et du style de format propres à la culture spécifiés. Le format de la chaîne doit correspondre exactement à au moins un des formats spécifiés. La méthode retourne une valeur qui indique si la conversion a réussi. |
| Nom | Description | |
|---|---|---|
|
Addition | Ajoute un intervalle de temps spécifié à une date et une heure spécifiées, générant une nouvelle date et heure. |
|
Equality | Détermine si deux instances spécifiées de DateTime sont égales. |
|
GreaterThan | Détermine si un DateTime spécifié est supérieur à un autre DateTime spécifié. |
|
GreaterThanOrEqual | Détermine si un DateTime spécifié est supérieur ou égal à un autre DateTime spécifié. |
|
Inequality | Détermine si deux instances spécifiées de DateTime ne sont pas égales. |
|
LessThan | Détermine si un DateTime spécifié est inférieur à un autre DateTime spécifié. |
|
LessThanOrEqual | Détermine si un DateTime spécifié est inférieur ou égal à un autre DateTime spécifié. |
|
Subtraction(DateTime, DateTime) | Soustrait une date et une heure spécifiées des autres date et heure spécifiées, et retourne un intervalle de temps. |
|
Subtraction(DateTime, TimeSpan) | Soustrait un intervalle de temps spécifié d'une date et d'une heure spécifiées et retourne une nouvelle date et heure. |
| Nom | Description | |
|---|---|---|
|
IConvertible.ToBoolean | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToByte | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToChar | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToDateTime | Infrastructure. Retourne l'objet DateTime en cours. |
|
IConvertible.ToDecimal | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToDouble | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToInt16 | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToInt32 | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToInt64 | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToSByte | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToSingle | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToType | Infrastructure. Convertit l'objet DateTime en cours en un objet de type spécifié. |
|
IConvertible.ToUInt16 | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToUInt32 | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
IConvertible.ToUInt64 | Infrastructure. Cette conversion n'est pas prise en charge. Toute tentative d'utilisation de cette méthode lève un InvalidCastException. |
|
ISerializable.GetObjectData | Remplit un objet SerializationInfo avec les données nécessaires à la sérialisation de l'objet DateTime actif. |
Le type valeur DateTime représente des dates et des heures dont la valeur est comprise entre 12:00:00 (minuit), le 1er janvier de l'année 0001 de notre ère et 11:59:59 (onze heures du soir), le 31 décembre de l'année 9999 après J.C. (notre ère).
Les valeurs de date sont mesurées en unités de 100 nanosecondes, appelées graduations, et une date spécifique correspond au nombre de graduations écoulées à compter de 12:00 (minuit), le 1er janvier de l'année 0001 après J.C. (notre ère) dans le calendrier GregorianCalendar (à l'exclusion des cycles qui seraient ajoutés par les secondes intercalaires). Par exemple, une valeur de graduations égale à 31241376000000000L représente la date du vendredi 1er janvier 0100 12:00:00 (minuit). Une valeur DateTime est toujours exprimée dans le contexte d'un calendrier explicite ou par défaut.
Remarque
|
|---|
|
Si vous utilisez une valeur de battements que vous souhaitez convertir en un autre intervalle de temps, tel que des minutes ou des secondes, vous devez utiliser la constante TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond ou TimeSpan.TicksPerMillisecond pour effectuer la conversion. Par exemple, pour ajouter le nombre de secondes représenté par un nombre spécifié de battements au composant Second d'une valeur DateTime, vous pouvez utiliser l'expression dateValue.Second + nTicks/Timespan.TicksPerSecond. |
Instanciation d'un objet DateTime
Vous pouvez créer une valeur DateTime de l'une des manières suivantes :
-
En appelant l'une des surcharges du constructeur DateTime qui vous permettent de spécifier des éléments spécifiques de la valeur de date et d'heure (tel que l'année, le mois et le jour, ou le nombre de graduations). L'instruction suivante illustre un appel à l'un des constructeurs DateTime pour créer une date avec une année, un mois, un jour, une heure, des minutes et des secondes spécifiques.
-
En utilisant toute syntaxe spécifique au compilateur pour déclarer des valeurs de date et d'heure. Par exemple, l'instruction Visual Basic suivante initialise une nouvelle valeur DateTime.
-
En assignant à l'objet DateTime une valeur de date et d'heure retournée par une propriété et une méthode. L'exemple suivant assigne la date et l'heure actuelles, la date et l'heure UTC (coordinated universal time) et la date actuelle aux trois nouvelles variables DateTime.
-
En analysant la représentation sous forme de chaîne d'une valeur de date et d'heure. Les méthodes Parse, ParseExact, TryParse et TryParseExact convertissent une chaîne en sa valeur équivalente de date et d'heure. L'exemple suivant utilise la méthode Parse pour analyser une chaîne et la convertir en une valeur DateTime.
Notez que les méthodes TryParse et TryParseExact indiquent si une chaîne particulière contient une représentation valide d'une valeur DateTime en plus d'exécuter la conversion.
-
En appelant le constructeur par défaut implicite de la structure DateTime. (Pour plus d'informations sur le constructeur par défaut implicite d'un type valeur, consultez Types valeur (référence C#).) Un équivalent approximatif, pour les compilateurs qui le prennent en charge, déclare une valeur DateTime sans lui assigner explicitement une valeur de date et d'heure. L'exemple suivant illustre un appel au constructeur par défaut implicite DateTime en C# et en Visual Basic, ainsi qu'une déclaration de variable DateTime sans assignation dans Visual Basic.
Valeurs DateTime et leurs représentations sous forme de chaîne
En interne, toutes les valeurs DateTime sont représentées comme le nombre de graduations (nombre d'intervalles de 100 nanosecondes) qui se sont écoulés depuis 12:00:00 minuit, le 1er janvier 0001. La valeur DateTime réelle est indépendante de la façon dont cette valeur apparaît en cas d'affichage dans un élément d'interface utilisateur ou en cas d'écriture dans un fichier. L'apparence d'une valeur DateTime est le résultat d'une opération de mise en forme. La mise en forme est le processus qui consiste à convertir une valeur en une représentation sous forme de chaîne.
L'apparence des valeurs de date et d'heure étant dépendants de facteurs tels que la culture, les normes internationales, les spécifications d'application et les préférences personnelles, la structure DateTime offre une grande souplesse pour la mise en forme des valeurs de date et d'heure via les surcharges de sa méthode ToString. La méthode DateTime.ToString() par défaut retourne la représentation sous forme de chaîne d'une valeur de date et d'heure à l'aide du modèle de date courte et d'heure longue de la culture actuelle. L'exemple suivant utilise la méthode DateTime.ToString() par défaut pour afficher la date et l'heure selon le modèle de date courte et d'heure longue de la culture en-US, culture actuelle de l'ordinateur sur lequel cet exemple a été exécuté.
La méthode DateTime.ToString(IFormatProvider) retourne la représentation sous forme de chaîne d'une valeur de date et d'heure selon le modèle de date courte et d'heure longue d'une culture spécifique. L'exemple suivant utilise la méthode DateTime.ToString(IFormatProvider) pour afficher la date et l'heure selon le modèle de date courte et d'heure longue pour la culture fr-FR.
La méthode DateTime.ToString(String) retourne la représentation sous forme de chaîne de la date et de l'heure dans un format défini par un spécificateur de format standard ou personnalisé et selon les conventions de mise en forme de la culture actuelle. L'exemple suivant utilise la méthode DateTime.ToString(String) pour afficher le modèle de date et d'heure complètes pour la culture en-US, culture actuelle de l'ordinateur sur lequel cet exemple a été exécuté.
La méthode DateTime.ToString(String, IFormatProvider) retourne la représentation sous forme de chaîne de la date et de l'heure dans un format défini par un spécificateur de format spécifique et selon les conventions de mise en forme d'une culture spécifique. L'exemple suivant utilise la méthode DateTime.ToString(String, IFormatProvider) pour afficher le modèle de date et heure complètes pour la culture fr-FR.
Considérations de version
Dans les versions antérieures du .NET Framework version 2.0, la structure DateTime contient un champ 64 bits composé d'un champ de 2 bits inutilisé concaténé avec un champ Ticks privé qui est un champ non signé de 62 bits qui contient le nombre de graduations qui représentent la date et heure. La valeur du champ Ticks peut être obtenue avec la propriété Ticks.
ہ partir du .NET Framework version 2.0, la structure DateTime contient un champ de 64 bits composé d'un champ Kind privé concaténé avec le champ Ticks. Le champ Kind est un champ de 2 bits qui indique si la structure DateTime représente une heure locale, un temps universel (UTC, Universal Time Coordinated) ou l'heure dans un fuseau horaire non spécifié. Le champ Kind est utilisé lors de l'exécution de conversions d'heure entre des fuseaux horaires, mais pas pour les comparaisons d'heure ou l'arithmétique. La valeur du champ Kind peut être obtenue avec la propriété Kind.
Remarque
|
|---|
|
Une alternative à la structure DateTime pour l'utilisation de valeurs de date et d'heure dans des fuseaux horaires particuliers est la structure DateTimeOffset. La structure DateTimeOffset stocke des informations d'horodatage dans un champ DateTime privé et le nombre de minutes par lesquelles ces date et heure diffèrent d'UTC dans un champ Int16 privé. Cela permet à une valeur DateTimeOffset de répercuter l'heure dans un fuseau horaire particulier, alors qu'une valeur DateTime ne peut refléter clairement que le fuseau horaire UTC et le fuseau horaire local. Pour plus d'informations sur l'utilisation appropriée de la structure DateTime ou de la structure DateTimeOffset lorsque vous travaillez avec des valeurs de date et d'heure, consultez Choix entre DateTime, DateTimeOffset et TimeZoneInfo. |
Valeurs DateTime
Dans le type DateTime, les valeurs d'heure sont souvent exprimées en temps universel coordonné (UTC), précédemment connu sous le nom d'heure de Greenwich (GMT). Le temps universel coordonné est l'heure mesurée à la longitude zéro, le point de départ de l'UTC. L'heure d'été ne s'applique pas à l'UTC.
L'heure locale est relative à un fuseau horaire particulier. Un fuseau horaire est associé à un décalage horaire, qui est le décalage du fuseau horaire mesuré en heures par rapport au point de départ UTC. De plus, l'heure locale peut en option être affectée par l'heure d'été, qui ajoute ou soustrait une heure de la journée. Par conséquent, l'heure locale est calculée en ajoutant l'offset de fuseau horaire à l'UTC et en réglant l'heure d'été si nécessaire. Le décalage horaire au point de départ de l'UTC est nul.
L'heure UTC est appropriée pour les calculs, les comparaisons et l'enregistrement des dates et heures dans les fichiers. L'heure locale est appropriée pour l'affichage dans les interfaces utilisateur des applications de bureau. Les applications prenant en charge les fuseaux horaires (telles que de nombreuses applications Web) doivent également utiliser plusieurs autres fuseaux horaires.
Si la propriété Kind d'un objet DateTime est DateTimeKind.Unspecified, il n'est pas spécifié si l'heure représentée est l'heure locale, l'heure UTC ou une heure dans un autre fuseau horaire.
Opérations DateTime
Un calcul effectué à l'aide d'une structure DateTime, telle que Add ou Subtract, ne modifie pas la valeur de la structure. En revanche, l'opération retourne une nouvelle structure DateTime dont la valeur est égale au résultat du calcul.
Les opérations de conversion entre des fuseaux horaires (tel qu'entre l'heure UTC et l'heure locale ou entre un fuseau horaire et un autre) prennent l'heure d'été en considération, mais l'arithmétique et les opérations de comparaison ne le font pas.
La structure DateTime elle-même offre un support limité pour la conversion d'un fuseau horaire en un autre. Vous pouvez utiliser la méthode ToLocalTime pour convertir l'UTC en heure locale, ou la méthode ToUniversalTime pour convertir l'heure locale en UTC. Toutefois, un jeu complet de méthodes de conversion de fuseau horaire est disponible dans la classe TimeZoneInfo. À l'aide de ces méthodes, vous pouvez convertir l'heure de l'un des fuseaux horaires du monde en l'heure de tout autre fuseau horaire.
Les calculs et les comparaisons d'objets DateTime n'ont de signification que si les objets représentent les heures dans le même fuseau horaire. Vous pouvez utiliser un objet TimeZoneInfo pour représenter un fuseau horaire de valeur DateTime, bien que les deux soient associés vaguement. (Autrement dit, un objet DateTime n'a pas de propriété qui retourne un objet qui représente le fuseau horaire de cette valeur de date et d'heure autre que la propriété Kind.) Pour cette raison, dans une application prenant en charge les fuseaux horaires, vous devez compter sur un mécanisme externe pour déterminer le fuseau horaire dans lequel un objet DateTime a été créé. Par exemple, vous pouvez utiliser une structure qui encapsule à la fois la valeur DateTime et l'objet TimeZoneInfo qui représente le fuseau horaire de valeur DateTime. Pour plus d'informations sur l'utilisation d'UTC dans les calculs et les comparaisons avec les valeurs DateTime, consultez Exécution d'opérations arithmétiques avec des dates et heures.
Lors de l'opération, chaque membre DateTime utilise implicitement le calendrier grégorien, à l'exception des constructeurs qui spécifient un calendrier, et des méthodes avec un paramètre dérivé de IFormatProvider, par exemple System.Globalization.DateTimeFormatInfo, qui spécifie implicitement un calendrier.
Les opérations effectuées par les membres du type DateTime prennent en considération des éléments tels que les années bissextiles et le nombre de jours d'un mois.
DateTime etTimespan
Les types valeur DateTime et TimeSpan se distinguent par le fait que DateTime représente un instant, tandis que TimeSpan représente un intervalle de temps. Cela signifie, par exemple, que vous pouvez soustraire une instance de DateTime d'une autre pour obtenir un objet TimeSpan qui représente l'intervalle de temps les séparant. De la même façon, vous pouvez ajouter un TimeSpan positif au DateTime actuel pour obtenir une valeur DateTime qui représente une date ultérieure.
Vous pouvez ajouter ou soustraire un intervalle de temps d'un objet DateTime. Les intervalles de temps peuvent être négatifs ou positifs ; ils peuvent être exprimés en unités telles que les graduations ou les secondes ou comme un objet TimeSpan.
Considérations sur COM Interop
On dit d'une valeur DateTime qui est transférée à une application COM, puis transférée de nouveau à une application managée, qu'elle effectue un aller-retour. Toutefois, une valeur DateTime qui ne spécifie qu'une heure n'effectue pas un aller-retour, comme vous vous en doutez.
Si vous effectuez uniquement un aller-retour d'une heure, telle que 3 heures de l'après-midi, la date et l'heure finale est le 30 décembre 1899 (ère commune). à 15 heures, au lieu du 1er janvier 0001 (notre ère) à 15 heures. Cela s'explique par le fait que le .NET Framework et COM adoptent une date par défaut lorsque seule une heure est spécifiée. Toutefois, le système COM suppose une date de base au 30 décembre, 1899, notre ère. Alors que le .NET Framework suppose une date de base au 1er janvier 0001, notre ère.
Lorsque seule une heure est passée du .NET Framework à COM, un traitement spécial qui convertit l'heure au format utilisé par COM est exécuté. Lorsque seule une heure est passée de COM au .NET Framework, aucun traitement spécial n'est exécuté parce que cela altérerait les dates et heures légitimes égales ou antérieures au 30 décembre 1899. Cela signifie également que si une date démarre son aller-retour à partir de COM, le .NET Framework et COM conservent cette date.
Le comportement du .NET Framework et de COM signifie que si votre application réalise un aller-retour de DateTime qui spécifie uniquement une heure, elle doit veiller à modifier ou à ignorer la date erronée du dernier objet DateTime.
L'exemple suivant illustre la comparaison de valeurs DateTime à peu près équivalentes, une légère différence est acceptée lorsqu'elles sont déclarées égales.
using System; class DateTimeTester { static bool RoughlyEquals(DateTime time, DateTime timeWithWindow, int windowInSeconds, int frequencyInSeconds) { long delta = (long)((TimeSpan)(timeWithWindow - time)).TotalSeconds % frequencyInSeconds; delta = delta > windowInSeconds ? frequencyInSeconds - delta : delta; return Math.Abs(delta) < windowInSeconds; } public static void Main() { int window = 10; int freq = 60 * 60 * 2; // 2 hours; DateTime d1 = DateTime.Now; DateTime d2 = d1.AddSeconds(2 * window); DateTime d3 = d1.AddSeconds(-2 * window); DateTime d4 = d1.AddSeconds(window / 2); DateTime d5 = d1.AddSeconds(-window / 2); DateTime d6 = (d1.AddHours(2)).AddSeconds(2 * window); DateTime d7 = (d1.AddHours(2)).AddSeconds(-2 * window); DateTime d8 = (d1.AddHours(2)).AddSeconds(window / 2); DateTime d9 = (d1.AddHours(2)).AddSeconds(-window / 2); Console.WriteLine("d1 ({0}) ~= d1 ({1}): {2}", d1, d1, RoughlyEquals(d1, d1, window, freq)); Console.WriteLine("d1 ({0}) ~= d2 ({1}): {2}", d1, d2, RoughlyEquals(d1, d2, window, freq)); Console.WriteLine("d1 ({0}) ~= d3 ({1}): {2}", d1, d3, RoughlyEquals(d1, d3, window, freq)); Console.WriteLine("d1 ({0}) ~= d4 ({1}): {2}", d1, d4, RoughlyEquals(d1, d4, window, freq)); Console.WriteLine("d1 ({0}) ~= d5 ({1}): {2}", d1, d5, RoughlyEquals(d1, d5, window, freq)); Console.WriteLine("d1 ({0}) ~= d6 ({1}): {2}", d1, d6, RoughlyEquals(d1, d6, window, freq)); Console.WriteLine("d1 ({0}) ~= d7 ({1}): {2}", d1, d7, RoughlyEquals(d1, d7, window, freq)); Console.WriteLine("d1 ({0}) ~= d8 ({1}): {2}", d1, d8, RoughlyEquals(d1, d8, window, freq)); Console.WriteLine("d1 ({0}) ~= d9 ({1}): {2}", d1, d9, RoughlyEquals(d1, d9, window, freq)); } } // The example displays output similar to the following: // d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True // d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False // d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False // d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True // d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True // d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False // d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False // d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True // d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tous les membres de ce type sont thread-safe. Les membres qui semblent modifier l'instance d'état retournent, en réalité, une nouvelle instance initialisée avec la nouvelle valeur. Comme avec tout autre type, la lecture et l'écriture sur une variable partagée qui contient une instance de ce type doivent être protégées par un verrou pour garantir la sécurité des threads.
Attention
|
|---|
|
L'assignation d'une instance de ce type n'est pas thread-safe sur toutes les plateformes matérielles car la représentation binaire de cette instance peut être trop grande pour être assignée dans une seule opération atomique. |
Remarque
Attention