DateTime Structure

Définition

Représente un instant, généralement exprimé sous la forme d'une date et d'une heure.Represents an instant in time, typically expressed as a date and time of day.

public value class DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System::Runtime::Serialization::ISerializable
[System.Serializable]
public struct DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
type DateTime = struct
    interface IFormattable
    interface IConvertible
    interface ISerializable
Public Structure DateTime
Implements IComparable, IComparable(Of DateTime), IConvertible, IEquatable(Of DateTime), IFormattable, ISerializable
Héritage
DateTime
Attributs
Implémente

Remarques

Important

Les ères des calendriers japonais sont basées sur le règne de l’empereur et sont donc amenées à changer.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Par exemple, le 1 mai 2019 a marqué le début de l’ère Reiwa dans JapaneseCalendar et JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Ce changement d’ère affecte toutes les applications qui utilisent ces calendriers.Such a change of era affects all applications that use these calendars. Pour plus d’informations et pour déterminer si vos applications sont affectées, consultez Handling a new era in the Japanese calendar in .NET.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Pour plus d’informations sur le test de vos applications sur les systèmes Windows pour garantir leur préparation au changement d’ère, consultez Préparer votre application au changement de l’ère japonaise.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Consultez Utilisation des ères pour connaître les fonctionnalités de .NET qui prennent en charge les calendriers avec plusieurs ères et les bonnes pratiques d’utilisation de ce type de calendrier.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

Notes

Certains exemples C# de cet article s’exécutent dans l’exécuteur et le terrain de jeu du code inline Try.NET.Some C# examples in this article run in the Try.NET inline code runner and playground. Sélectionnez le bouton Exécuter pour exécuter un exemple dans une fenêtre interactive.Select the Run button to run an example in an interactive window. Une fois que vous avez exécuté le code, vous pouvez le modifier et exécuter le code modifié en resélectionnant Exécuter.Once you execute the code, you can modify it and run the modified code by selecting Run again. La code modifié s’exécute dans la fenêtre interactive ou, si la compilation échoue, la fenêtre interactive affiche tous les messages d’erreur du compilateur C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Le fuseau horaire local de l’exécuteur de code en ligne et du terrain de jeu inline Try.NET est le temps universel coordonné, ou UTC.The local time zone of the Try.NET inline code runner and playground is Coordinated Universal Time, or UTC. Cela peut affecter le comportement et la sortie d’exemples qui illustrent les types DateTime, DateTimeOffset et TimeZoneInfo ainsi que leurs membres.This may affect the behavior and the output of examples that illustrate the DateTime, DateTimeOffset, and TimeZoneInfo types and their members.

Cet article contient plusieurs exemples qui utilisent le type DateTime :This article includes several examples that use the DateTime type:

Exemples d’initialisationInitialization Examples

Mise en forme de DateTime objets en tant que chaînesFormatting DateTime objects as strings

Analyse de chaînes en tant qu’objets DateTimeParsing strings as DateTime objects

DateTime résolutionDateTime resolution

Culture et calendriersCulture and calendars

PersistancePersistence

Cette section contient des rubriques pour de nombreuses utilisations courantes de la structure DateTime :This section contains topics for many common uses of the DateTime struct:

Le type de valeur DateTime représente les dates et les heures dont les valeurs sont comprises entre 00:00:00 (minuit), le 1er janvier 0001 Anno et (ère commune) et 11:59:59 31 décembre 9999 après J.-C.The DateTime value type represents dates and times with values ranging from 00:00:00 (midnight), January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. commune dans le calendrier grégorien.(C.E.) in the Gregorian calendar.

Les valeurs d’heure sont mesurées en unités de 100 nanosecondes appelées battements.Time values are measured in 100-nanosecond units called ticks. Une date particulière est le nombre de cycles depuis le 12:00 minuit, le 1er janvier 0001 apr. J.-C.A particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. (NOTRE ÈRE) dans le GregorianCalendar calendrier.(C.E.) in the GregorianCalendar calendar. Le nombre exclut les graduations qui seraient ajoutées par les secondes bissextiles.The number excludes ticks that would be added by leap seconds. Par exemple, la valeur des graduations de 31241376000000000L représente la date du vendredi 01 janvier 0100 12:00:00 minuit.For example, a ticks value of 31241376000000000L represents the date Friday, January 01, 0100 12:00:00 midnight. Une valeur DateTime est toujours exprimée dans le contexte d’un calendrier explicite ou par défaut.A DateTime value is always expressed in the context of an explicit or default calendar.

Notes

Si vous utilisez une valeur de graduations que vous souhaitez convertir en un autre intervalle de temps, par exemple 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.If you are working with a ticks value that you want to convert to some other time interval, such as minutes or seconds, you should use the TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, or TimeSpan.TicksPerMillisecond constant to perform the conversion. Par exemple, pour ajouter le nombre de secondes représenté par un nombre spécifié de graduations au composant Second d’une valeur DateTime, vous pouvez utiliser l’expression dateValue.Second + nTicks/Timespan.TicksPerSecond.For example, to add the number of seconds represented by a specified number of ticks to the Second component of a DateTime value, you can use the expression dateValue.Second + nTicks/Timespan.TicksPerSecond.

Vous pouvez afficher la source de l’ensemble complet d’exemples à partir de cet article dans Visual Basic C# ou à partir du référentiel docs sur GitHub.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

Notes

Une alternative à la structure DateTime pour travailler avec des valeurs de date et d’heure dans des fuseaux horaires particuliers est la structure DateTimeOffset.An alternative to the DateTime structure for working with date and time values in particular time zones is the DateTimeOffset structure. La structure DateTimeOffset stocke les informations de date et d’heure dans un champ privé DateTime et le nombre de minutes pendant lesquelles cette date et cette heure diffèrent de l’heure UTC dans un champ Int16 privé.The DateTimeOffset structure stores date and time information in a private DateTime field and the number of minutes by which that date and time differs from UTC in a private Int16 field. Cela permet à une valeur DateTimeOffset de refléter l’heure dans un fuseau horaire particulier, alors qu’une valeur DateTime peut uniquement refléter de manière non ambiguë l’heure UTC et l’heure locale du fuseau horaire.This makes it possible for a DateTimeOffset value to reflect the time in a particular time zone, whereas a DateTime value can unambiguously reflect only UTC and the local time zone's time. Pour savoir quand utiliser la structure DateTime ou la structure DateTimeOffset lorsque vous utilisez des valeurs de date et d’heure, consultez choix entre DateTime, DateTimeOffset, TimeSpan et TimeZoneInfo.For a discussion about when to use the DateTime structure or the DateTimeOffset structure when working with date and time values, see Choosing Between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo.

Initialisation d’un objet DateTimeInitializing a DateTime object

Vous pouvez affecter une valeur initiale à une nouvelle valeur DateTime de plusieurs façons :You can assign an initial value to a new DateTime value in many different ways:

  • Appel d’un constructeur, soit lorsque vous spécifiez des arguments pour des valeurs, soit à l’aide du constructeur sans paramètre implicite.Calling a constructor, either one where you specify arguments for values, or use the implicit parameterless constructor.
  • Assignation d’un DateTime à la valeur de retour d’une propriété ou d’une méthode.Assigning a DateTime to the return value of a property or method.
  • Analyse d’une valeur DateTime à partir de sa représentation sous forme de chaîne.Parsing a DateTime value from its string representation.
  • Utilisation des fonctionnalités de langage spécifiques à Visual Basic pour instancier une DateTime.Using Visual Basic-specific language features to instantiate a DateTime.

Les extraits de code suivants présentent des exemples de chacun :The following code snippets show examples of each:

Appeler les constructeursInvoke Constructors

Vous appelez l’une des surcharges du constructeur DateTime qui spécifient des éléments de la valeur de date et d’heure (par exemple, l’année, le mois et le jour, ou le nombre de graduations).You call any of the overloads of the DateTime constructor that specify elements of the date and time value (such as the year, month, and day, or the number of ticks). Le code suivant crée une date spécifique à l’aide du constructeur DateTime, en spécifiant l’année, le mois, le jour, l’heure, la minute et la seconde.The following code creates a specific date using the DateTime constructor specifying the year, month, day, hour, minute, and second.

[!code-vbSystem.DateTime.Instantiation#1][!code-vbSystem.DateTime.Instantiation#1]

var date1 = new DateTime(2008, 5, 1, 8, 30, 52);
Console.WriteLine(date1);

Vous appelez le constructeur sans paramètre implicite de la structure DateTime lorsque vous souhaitez qu’une DateTime soit initialisée à sa valeur par défaut.You invoke the DateTime structure's implicit parameterless constructor when you want a DateTime initialized to its default value. (Pour plus d’informations sur le constructeur sans paramètre implicite d’un type valeur, consultez types valeur.) Certains compilateurs prennent également en charge la déclaration d’une valeur DateTime sans lui assigner explicitement une valeur.(For details on the implicit parameterless constructor of a value type, see Value Types.) Some compilers also support declaring a DateTime value without explicitly assigning a value to it. La création d’une valeur sans initialisation explicite entraîne également la valeur par défaut.Creating a value without an explicit initialization also results in the default value. L’exemple suivant illustre le constructeur sans paramètre implicite DateTime dans C# et Visual Basic, ainsi qu’une déclaration DateTime sans assignation dans Visual Basic.The following example illustrates the DateTime implicit parameterless constructor in C# and Visual Basic, as well as a DateTime declaration without assignment in Visual Basic.

[!code-vbSystem.DateTime.Instantiation#5][!code-vbSystem.DateTime.Instantiation#5]

var dat1 = new DateTime();
// The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture));
// The following method call displays True.
Console.WriteLine(dat1.Equals(DateTime.MinValue));
Affectation d’une valeur calculéeAssigning a computed value

Vous pouvez assigner l’objet DateTime à une valeur de date et d’heure retournée par une propriété ou une méthode.You can assign the DateTime object a date and time value returned by a property or method. L’exemple suivant affecte la date et l’heure actuelles, la date et l’heure en temps universel coordonné (UTC, Universal Time Coordinated) et la date actuelle à trois nouvelles variables DateTime.The following example assigns the current date and time, the current Coordinated Universal Time (UTC) date and time, and the current date to three new DateTime variables.

[!code-vbSystem.DateTime.Instantiation#3][!code-vbSystem.DateTime.Instantiation#3]

DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.UtcNow;
DateTime date3 = DateTime.Today;
Analyse d’une chaîne qui représente une valeur DateTimeParsing a string that represents a DateTime

Les méthodes Parse, ParseExact, TryParse et TryParseExact convertissent toutes une chaîne en sa valeur équivalente de date et d’heure.The Parse, ParseExact, TryParse, and TryParseExact methods all convert a string to its equivalent date and time value. Les exemples suivants utilisent les méthodes Parse et ParseExact pour analyser une chaîne et la convertir en valeur DateTime.The following examples use the Parse and ParseExact methods to parse a string and convert it to a DateTime value. Le deuxième format utilise un formulaire pris en charge par la norme ISO 8601 pour représenter une date et une heure sous forme de chaîne.The second format uses a form supported by the ISO 8601 standard for a representing date and time in string format. Cette représentation standard est souvent utilisée pour transférer des informations de date dans les services Web.This standard representation is often used to transfer date information in web services.

[!code-vbSystem.DateTime.Instantiation#4][!code-vbSystem.DateTime.Instantiation#4]

var dateString = "5/1/2008 8:30:52 AM";
DateTime date1 = DateTime.Parse(dateString,
                          System.Globalization.CultureInfo.InvariantCulture);
var iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                                System.Globalization.CultureInfo.InvariantCulture);

Les méthodes TryParse et TryParseExact indiquent si une chaîne est une représentation valide d’une valeur DateTime et, si c’est le cas, effectue la conversion.The TryParse and TryParseExact methods indicate whether a string is a valid representation of a DateTime value and, if it is, performs the conversion.

Syntaxe spécifique au langage pour Visual BasicLanguage-specific syntax for Visual Basic

L’instruction Visual Basic suivante initialise une nouvelle valeur DateTime.The following Visual Basic statement initializes a new DateTime value.

[!code-vbSystem.DateTime.Instantiation#2][!code-vbSystem.DateTime.Instantiation#2]

Valeurs DateTime et leurs représentations sous forme de chaîneDateTime values and their string representations

En interne, toutes les valeurs DateTime sont représentées en tant que nombre de battements (nombre d’intervalles de 100 nanosecondes) qui se sont écoulés depuis 12:00:00 le 1er janvier 0001 à minuit.Internally, all DateTime values are represented as the number of ticks (the number of 100-nanosecond intervals) that have elapsed since 12:00:00 midnight, January 1, 0001. La valeur réelle de la @no__t 0 est indépendante de la façon dont cette valeur s’affiche quand elle est affichée.The actual DateTime value is independent of the way in which that value appears when displayed. L’apparence d’une valeur DateTime est le résultat d’une opération de mise en forme qui convertit une valeur en sa représentation sous forme de chaîne.The appearance of a DateTime value is the result of a formatting operation that converts a value to its string representation.

L’apparence des valeurs de date et d’heure dépend de la culture, des normes internationales, des exigences de l’application et de la préférence personnelle.The appearance of date and time values is dependent on culture, international standards, application requirements, and personal preference. La structure DateTime offre une grande souplesse dans la mise en forme des valeurs de date et d’heure par le biais de surcharges de ToString.The DateTime structure offers flexibility in formatting date and time values through overloads of 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 rapide et d’heure longue de la culture actuelle.The default DateTime.ToString() method returns the string representation of a date and time value using the current culture's short date and long time pattern. L’exemple suivant utilise la méthode DateTime.ToString() par défaut.The following example uses the default DateTime.ToString() method. Elle affiche la date et l’heure à l’aide du modèle de date et d’heure courtes pour la culture actuelle.It displays the date and time using the short date and long time pattern for the current culture. La culture en-US est la culture actuelle sur l’ordinateur sur lequel l’exemple a été exécuté.The en-US culture is the current culture on the computer on which the example was run.

[!code-csharpSystem.DateTime.Formatting#1][!code-csharpSystem.DateTime.Formatting#1]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString())
' For en-US culture, displays 3/1/2008 7:00:00 AM

Vous devrez peut-être mettre en forme des dates dans une culture spécifique pour prendre en charge des scénarios Web où le serveur peut se trouver dans une culture différente de celle du client.You may need to format dates in a specific culture to support web scenarios where the server may be in a different culture from the client. Vous spécifiez la culture à l’aide de la méthode DateTime.ToString(IFormatProvider) pour créer la représentation de la date et de l’heure courtes dans une culture spécifique.You specify the culture using the DateTime.ToString(IFormatProvider) method to create the short date and long time representation in a specific culture. L’exemple suivant utilise la méthode DateTime.ToString(IFormatProvider) pour afficher la date et l’heure à l’aide du modèle de date et d’heure courtes pour la culture fr-FR.The following example uses the DateTime.ToString(IFormatProvider) method to display the date and time using the short date and long time pattern for the fr-FR culture.

[!code-csharp-interactiveSystem.DateTime.Formatting#2][!code-csharp-interactiveSystem.DateTime.Formatting#2]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 01/03/2008 07:00:00

D’autres applications peuvent nécessiter des représentations sous forme de chaîne différentes d’une date.Other applications may require different string representations of a date. La méthode DateTime.ToString(String) retourne la représentation sous forme de chaîne définie par un spécificateur de format standard ou personnalisé à l’aide des conventions de mise en forme de la culture actuelle.The DateTime.ToString(String) method returns the string representation defined by a standard or custom format specifier using the formatting conventions of the current culture. L’exemple suivant utilise la méthode DateTime.ToString(String) pour afficher le modèle de date et d’heure complet pour la culture en-US, la culture actuelle sur l’ordinateur sur lequel l’exemple a été exécuté.The following example uses the DateTime.ToString(String) method to display the full date and time pattern for the en-US culture, the current culture on the computer on which the example was run.

[!code-csharpSystem.DateTime.Formatting#3][!code-csharpSystem.DateTime.Formatting#3]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F"))
' Displays Saturday, March 01, 2008 7:00:00 AM

Enfin, vous pouvez spécifier à la fois la culture et le format à l’aide de la méthode DateTime.ToString(String, IFormatProvider).Finally, you can specify both the culture and the format using the DateTime.ToString(String, IFormatProvider) method. L’exemple suivant utilise la méthode DateTime.ToString(String, IFormatProvider) pour afficher le modèle de date et d’heure complet pour la culture fr-FR.The following example uses the DateTime.ToString(String, IFormatProvider) method to display the full date and time pattern for the fr-FR culture.

[!code-csharp-interactiveSystem.DateTime.Formatting#4][!code-csharp-interactiveSystem.DateTime.Formatting#4]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F", New System.Globalization.CultureInfo("fr-FR")))
' Displays samedi 1 mars 2008 07:00:00

La surcharge DateTime.ToString(String) peut également être utilisée avec une chaîne de format personnalisée pour spécifier d’autres formats.The DateTime.ToString(String) overload can also be used with a custom format string to specify other formats. L’exemple suivant montre comment mettre en forme une chaîne à l’aide du format standard ISO 8601 utilisé pour les services Web.The following example shows how to format a string using the ISO 8601 standard format often used for web services. Le format ISO 8601 n’a pas de chaîne de format standard correspondante.The Iso 8601 format does not have a corresponding standard format string.

[!code-csharp-interactiveSystem.DateTime.Formatting#5][!code-csharp-interactiveSystem.DateTime.Formatting#5]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("yyyyMMddTHH:mm:ssZ"))
' Displays 20080301T07:00:00Z

Pour plus d’informations sur la mise en forme des valeurs DateTime, consultez chaînes de format de date et d’heure standard et chaînes de format de date et d’heure personnalisées.For more information about formatting DateTime values, see Standard Date and Time Format Strings and Custom Date and Time Format Strings.

Analyse des valeurs DateTime à partir de chaînesParsing DateTime values from strings

L’analyse convertit la représentation sous forme de chaîne d’une date et d’une heure en valeur DateTime.Parsing converts the string representation of a date and time to a DateTime value. En règle générale, les chaînes de date et d’heure ont deux utilisations différentes dans les applications :Typically, date and time strings have two different usages in applications:

  • Une date et une heure prennent diverses formes et reflètent les conventions de la culture actuelle ou d’une culture spécifique.A date and time takes a variety of forms and reflects the conventions of either the current culture or a specific culture. Par exemple, une application permet à un utilisateur dont la culture actuelle est en-US d’entrer une valeur de date sous la forme « 12/15/2013 » ou « 15 décembre 2013 ».For example, an application allows a user whose current culture is en-US to input a date value as "12/15/2013" or "December 15, 2013". Il permet à un utilisateur dont la culture actuelle est en-GB d’entrer une valeur de date sous la forme « 15/12/2013 » ou « 15 décembre 2013 ».It allows a user whose current culture is en-gb to input a date value as "15/12/2013" or "15 December 2013."

  • Une date et une heure sont représentées dans un format prédéfini.A date and time is represented in a predefined format. Par exemple, une application sérialise une date sous la forme « 20130103 » indépendamment de la culture sur laquelle l’application s’exécute.For example, an application serializes a date as "20130103" independently of the culture on which the app is running. Une application peut nécessiter l’entrée de dates dans le format de date abrégé de la culture actuelle.An application may require dates be input in the current culture's short date format.

Vous utilisez la méthode Parse ou TryParse pour convertir une chaîne de l’un des formats de date et d’heure communs utilisés par une culture en valeur DateTime.You use the Parse or TryParse method to convert a string from one of the common date and time formats used by a culture to a DateTime value. L’exemple suivant montre comment vous pouvez utiliser TryParse pour convertir des chaînes de date dans différents formats spécifiques à une culture en une valeur DateTime.The following example shows how you can use TryParse to convert date strings in different culture-specific formats to a DateTime value. Il remplace la culture actuelle par l’anglais (Grande-Bretagne) et appelle la méthode GetDateTimeFormats() pour générer un tableau de chaînes de date et d’heure.It changes the current culture to English (Great Britain) and calls the GetDateTimeFormats() method to generate an array of date and time strings. Il passe ensuite chaque élément du tableau à la méthode TryParse.It then passes each element in the array to the TryParse method. La sortie de l’exemple montre que la méthode d’analyse a pu convertir chacune des chaînes de date et d’heure spécifiques à la culture.The output from the example shows the parsing method was able to successfully convert each of the culture-specific date and time strings.

[!code-csharp-interactiveSystem.DateTime.Parsing#1][!code-csharp-interactiveSystem.DateTime.Parsing#1]

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

Dim date1 As New DateTime(2013, 6, 1, 12, 32, 30)
Dim badFormats As New List(Of String)

Console.WriteLine($"{"Date String",-37} {"Date",-19}")
Console.WriteLine()
For Each dateString As String In date1.GetDateTimeFormats()
    Dim parsedDate As DateTime
    If DateTime.TryParse(dateString, parsedDate) Then
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19:g}")
    Else
        badFormats.Add(dateString)
    End If
Next

' Display strings that could not be parsed.
If badFormats.Count > 0 Then
    Console.WriteLine()
    Console.WriteLine("Strings that could not be parsed: ")
    For Each badFormat In badFormats
        Console.WriteLine($"   {badFormat}")
    Next
End If
' The example displays the following output:
'       Date String                           Date               
'       
'       01/06/2013                            01/06/2013 00:00:00
'       01/06/13                              01/06/2013 00:00:00
'       1/6/13                                01/06/2013 00:00:00
'       1.6.13                                01/06/2013 00:00:00
'       2013-06-01                            01/06/2013 00:00:00
'       01 June 2013                          01/06/2013 00:00:00
'       1 June 2013                           01/06/2013 00:00:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       01 June                               01/06/2013 00:00:00
'       01 June                               01/06/2013 00:00:00
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       2013-06-01T12:32:30                   01/06/2013 12:32:30
'       12:32                                 22/04/2013 12:32:00
'       12:32                                 22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       2013-06-01 12:32:30Z                  01/06/2013 05:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 07:32:30 PM              01/06/2013 19:32:30
'       01 June 2013 7:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 07:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 7:32:30 PM                01/06/2013 19:32:30
'       June 2013                             01/06/2013 00:00:00
'       June 2013                             01/06/2013 00:00:00

Vous utilisez les méthodes ParseExact et TryParseExact pour convertir une chaîne qui doit correspondre à un format ou des formats particuliers en une valeur DateTime.You use the ParseExact and TryParseExact methods to convert a string that must match a particular format or formats to a DateTime value. Vous spécifiez une ou plusieurs chaînes de format de date et d’heure en tant que paramètre de la méthode d’analyse.You specify one or more date and time format strings as a parameter to the parsing method. L’exemple suivant utilise la méthode TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) pour convertir les chaînes qui doivent être au format « AAAAMMJJ » ou « HHmmss » en valeurs DateTime.The following example uses the TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method to convert strings that must be either in a "yyyyMMdd" format or a "HHmmss" format to DateTime values.

[!code-csharpSystem.DateTime.Parsing#2][!code-csharpSystem.DateTime.Parsing#2]

Dim formats() As String = {"yyyyMMdd", "HHmmss"}
Dim dateStrings() As String = {"20130816", "20131608",
                              "  20130816   ", "115216",
                              "521116", "  115216  "}
Dim parsedDate As DateTime

For Each dateString As String In dateStrings
    If DateTime.TryParseExact(dateString, formats, Nothing,
                           DateTimeStyles.AllowWhiteSpaces Or
                           DateTimeStyles.AdjustToUniversal,
                           parsedDate) Then
        Console.WriteLine($"{dateString} --> {parsedDate:g}")
    Else
        Console.WriteLine($"Cannot convert {dateString}")
    End If
Next
' The example displays the following output:
'       20130816 --> 8/16/2013 12:00 AM
'       Cannot convert 20131608
'         20130816    --> 8/16/2013 12:00 AM
'       115216 --> 4/22/2013 11:52 AM
'       Cannot convert 521116
'         115216   --> 4/22/2013 11:52 AM

Une utilisation courante de ParseExact consiste à convertir une représentation sous forme de chaîne à partir d’un service Web, généralement au format ISO 8601 standard.One common use for ParseExact is to convert a string representation from a web service, usually in ISO 8601 standard format. Le code suivant affiche la chaîne de format correcte à utiliser :The following code shows the correct format string to use:

[!code-csharp-interactiveSystem.DateTime.Parsing#3][!code-csharp-interactiveSystem.DateTime.Parsing#3]

Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As DateTime = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", CultureInfo.InvariantCulture)
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}")

Si une chaîne ne peut pas être analysée, les méthodes Parse et ParseExact lèvent une exception.If a string cannot be parsed, the Parse and ParseExact methods throw an exception. Les méthodes TryParse et TryParseExact retournent une valeur Boolean qui indique si la conversion a réussi ou a échoué.The TryParse and TryParseExact methods return a Boolean value that indicates whether the conversion succeeded or failed. Vous devez utiliser les méthodes TryParse ou TryParseExact dans les scénarios où les performances sont importantes.You should use the TryParse or TryParseExact methods in scenarios where performance is important. L’opération d’analyse pour les chaînes de date et d’heure a tendance à avoir un taux d’échec élevé et la gestion des exceptions est coûteuse.The parsing operation for date and time strings tends to have a high failure rate, and exception handling is expensive. Utilisez ces méthodes si les chaînes sont entrées par les utilisateurs ou proviennent d’une source inconnue.Use these methods if strings are input by users or coming from an unknown source.

Pour plus d’informations sur l’analyse des valeurs de date et d’heure, consultez analyse des chaînes de date et d’heure.For more information about parsing date and time values, see Parsing Date and Time Strings.

Valeurs DateTimeDateTime values

Les descriptions des valeurs de temps dans le type DateTime sont souvent exprimées à l’aide de la norme UTC (Coordinated Universal Time).Descriptions of time values in the DateTime type are often expressed using the Coordinated Universal Time (UTC) standard. L’heure universelle coordonnée est le nom internationalement reconnu pour l’heure de Greenwich (GMT).Coordinated Universal Time is the internationally recognized name for Greenwich Mean Time (GMT). Le temps universel coordonné est le temps mesuré à zéro degré de longitude, le point d’origine UTC.Coordinated Universal Time is the time as measured at zero degrees longitude, the UTC origin point. L’heure d’été n’est pas applicable à l’heure UTC.Daylight saving time is not applicable to UTC.

L’heure locale est relative à un fuseau horaire particulier.Local time is relative to a particular time zone. Un fuseau horaire est associé à un décalage de fuseau horaire.A time zone is associated with a time zone offset. Un décalage de fuseau horaire correspond au déplacement du fuseau horaire mesuré en heures à partir du point d’origine UTC.A time zone offset is the displacement of the time zone measured in hours from the UTC origin point. En outre, l’heure locale est éventuellement affectée par l’heure d’été, qui ajoute ou soustrait un ajustement d’intervalle de temps.In addition, local time is optionally affected by daylight saving time, which adds or subtracts a time interval adjustment. L’heure locale est calculée en ajoutant le décalage de fuseau horaire au temps universel coordonné (UTC) et en ajustant l’heure d’été, si nécessaire.Local time is calculated by adding the time zone offset to UTC and adjusting for daylight saving time if necessary. Le décalage de fuseau horaire au point d’origine UTC est égal à zéro.The time zone offset at the UTC origin point is zero.

L’heure UTC est adaptée aux calculs, aux comparaisons et au stockage des dates et de l’heure dans les fichiers.UTC time is suitable for calculations, comparisons, and storing dates and time in files. L’heure locale est appropriée pour l’affichage dans les interfaces utilisateur des applications de bureau.Local time is appropriate for display in user interfaces of desktop applications. Les applications prenant en charge les fuseaux horaires (telles que de nombreuses applications Web) doivent également fonctionner avec un certain nombre d’autres fuseaux horaires.Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones.

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.If the Kind property of a DateTime object is DateTimeKind.Unspecified, it is unspecified whether the time represented is local time, UTC time, or a time in some other time zone.

Résolution DateTimeDateTime resolution

Notes

Comme alternative à l’exécution d’opérations arithmétiques de date et d’heure sur des valeurs DateTime pour mesurer le temps écoulé, vous pouvez utiliser la classe Stopwatch.As an alternative to performing date and time arithmetic on DateTime values to measure elapsed time, you can use the Stopwatch class.

La propriété Ticks exprime les valeurs de date et d’heure en unités de 1 10-millionième de seconde.The Ticks property expresses date and time values in units of one ten-millionth of a second. La propriété Millisecond retourne les millièmes de seconde dans une valeur de date et d’heure.The Millisecond property returns the thousandths of a second in a date and time value. L’utilisation d’appels répétés à la propriété DateTime.Now pour mesurer le temps écoulé dépend de l’horloge système.Using repeated calls to the DateTime.Now property to measure elapsed time is dependent on the system clock. L’horloge système sur les systèmes Windows 7 et Windows 8 a une résolution d’environ 15 millisecondes.The system clock on Windows 7 and Windows 8 systems has a resolution of approximately 15 milliseconds. Cette résolution affecte les petits intervalles de temps inférieurs à 100 millisecondes.This resolution affects small time intervals less than 100 milliseconds.

L’exemple suivant illustre la dépendance entre les valeurs de date et d’heure actuelles et la résolution de l’horloge système.The following example illustrates the dependence of current date and time values on the resolution of the system clock. Dans l’exemple, une boucle externe se répète 20 fois, et une boucle interne sert à retarder la boucle externe.In the example, an outer loop repeats 20 times, and an inner loop serves to delay the outer loop. Si la valeur du compteur de boucles externe est 10, un appel à la méthode Thread.Sleep introduit un délai de cinq millisecondes.If the value of the outer loop counter is 10, a call to the Thread.Sleep method introduces a five-millisecond delay. L’exemple suivant montre le nombre de millisecondes retournées par la propriété DateTime.Now.Milliseconds change uniquement après l’appel à Thread.Sleep.The following example shows the number of milliseconds returned by the DateTime.Now.Milliseconds property changes only after the call to Thread.Sleep.

[!code-csharp-interactiveSystem.DateTime.Resolution#1][!code-csharp-interactiveSystem.DateTime.Resolution#1]

Dim output As String = ""
For ctr As Integer = 0 To 20
    output += Date.Now.Millisecond.ToString() + vbCrLf
    ' Introduce a delay loop.
    For delay As Integer = 0 To 1000
    Next

    If ctr = 10 Then
        output += "Thread.Sleep called..." + vbCrLf
        Thread.Sleep(5)
    End If
Next
Console.WriteLine(output)
' The example displays output like the following:
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       Thread.Sleep called...
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143

Opérations DateTimeDateTime operations

Un calcul à l’aide d’une structure DateTime, comme Add ou Subtract, ne modifie pas la valeur de la structure.A calculation using a DateTime structure, such as Add or Subtract, does not modify the value of the structure. Au lieu de cela, le calcul retourne une nouvelle structure DateTime dont la valeur est le résultat du calcul.Instead, the calculation returns a new DateTime structure whose value is the result of the calculation.

Les opérations de conversion entre les fuseaux horaires (par exemple entre l’heure UTC et l’heure locale, ou entre un fuseau horaire et un autre) prennent en compte l’heure d’été, contrairement aux opérations arithmétiques et de comparaison.Conversion operations between time zones (such as between UTC and local time, or between one time zone and another) take daylight saving time into account, but arithmetic and comparison operations do not.

La structure DateTime elle-même offre une prise en charge limitée de la conversion d’un fuseau horaire à un autre.The DateTime structure itself offers limited support for converting from one time zone to another. Vous pouvez utiliser la méthode ToLocalTime pour convertir l’heure UTC en heure locale, ou vous pouvez utiliser la méthode ToUniversalTime pour convertir l’heure locale en heure UTC.You can use the ToLocalTime method to convert UTC to local time, or you can use the ToUniversalTime method to convert from local time to UTC. Toutefois, un ensemble complet de méthodes de conversion de fuseau horaire est disponible dans la classe TimeZoneInfo.However, a full set of time zone conversion methods is available in the TimeZoneInfo class. Vous convertissez l’heure de l’une des fuseaux horaires du monde en heure dans un autre fuseau horaire à l’aide de ces méthodes.You convert the time in any one of the world's time zones to the time in any other time zone using these methods.

Les calculs et les comparaisons d’objets DateTime sont significatifs uniquement si les objets représentent des heures dans le même fuseau horaire.Calculations and comparisons of DateTime objects are meaningful only if the objects represent times in the same time zone. Vous pouvez utiliser un objet TimeZoneInfo pour représenter le fuseau horaire d’une valeur DateTime, bien que les deux soient faiblement couplés.You can use a TimeZoneInfo object to represent a DateTime value's time zone, although the two are loosely coupled. Un objet DateTime n’a pas de propriété qui retourne un objet qui représente le fuseau horaire de la valeur de date et d’heure.A DateTime object does not have a property that returns an object that represents that date and time value's time zone. La propriété Kind indique si une DateTime représente l’heure UTC, l’heure locale ou n’est pas spécifiée.The Kind property indicates if a DateTime represents UTC, local time, or is unspecified. Dans une application prenant en charge les fuseaux horaires, vous devez vous appuyer sur un mécanisme externe pour déterminer le fuseau horaire dans lequel un objet DateTime a été créé.In a time zone-aware application, you must rely on some external mechanism to determine the time zone in which a DateTime object was created. Vous pouvez utiliser une structure qui encapsule la valeur DateTime et l’objet TimeZoneInfo qui représente le fuseau horaire de la valeur DateTime.You could use a structure that wraps both the DateTime value and the TimeZoneInfo object that represents the DateTime value's time zone. Pour plus d’informations sur l’utilisation de l’heure UTC dans les calculs et les comparaisons avec des valeurs DateTime, consultez exécution d’opérations arithmétiques avec des dates et des heures.For details on using UTC in calculations and comparisons with DateTime values, see Performing Arithmetic Operations with Dates and Times.

Chaque membre DateTime utilise implicitement le calendrier grégorien pour effectuer son opération.Each DateTime member implicitly uses the Gregorian calendar to perform its operation. Les exceptions sont des méthodes qui spécifient implicitement un calendrier.Exceptions are methods that implicitly specify a calendar. Celles-ci incluent des constructeurs qui spécifient un calendrier et des méthodes avec un paramètre dérivé de IFormatProvider, comme System.Globalization.DateTimeFormatInfo.These include constructors that specify a calendar, and methods with a parameter derived from IFormatProvider, such as System.Globalization.DateTimeFormatInfo.

Les opérations effectuées par les membres du type DateTime prennent en compte des détails tels que les années bissextiles et le nombre de jours d’un mois.Operations by members of the DateTime type take into account details such as leap years and the number of days in a month.

Valeurs et calendriers DateTimeDateTime values and calendars

La bibliothèque de classes .NET Framework comprend un certain nombre de classes de calendrier, toutes dérivées de la classe Calendar.The .NET Framework Class Library includes a number of calendar classes, all of which are derived from the Calendar class. Il s'agit des éléments suivants :They are:

Important

Les ères des calendriers japonais sont basées sur le règne de l’empereur et sont donc amenées à changer.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Par exemple, le 1 mai 2019 a marqué le début de l’ère Reiwa dans JapaneseCalendar et JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Ce changement d’ère affecte toutes les applications qui utilisent ces calendriers.Such a change of era affects all applications that use these calendars. Pour plus d’informations et pour déterminer si vos applications sont affectées, consultez Handling a new era in the Japanese calendar in .NET.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Pour plus d’informations sur le test de vos applications sur les systèmes Windows pour garantir leur préparation au changement d’ère, consultez Préparer votre application au changement de l’ère japonaise.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Consultez Utilisation des ères pour connaître les fonctionnalités de .NET qui prennent en charge les calendriers avec plusieurs ères et les bonnes pratiques d’utilisation de ce type de calendrier.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

Chaque culture utilise un calendrier par défaut défini par sa propriété CultureInfo.Calendar en lecture seule.Each culture uses a default calendar defined by its read-only CultureInfo.Calendar property. Chaque culture peut prendre en charge un ou plusieurs calendriers définis par sa propriété CultureInfo.OptionalCalendars en lecture seule.Each culture may support one or more calendars defined by its read-only CultureInfo.OptionalCalendars property. Le calendrier actuellement utilisé par un objet CultureInfo spécifique est défini par sa propriété DateTimeFormatInfo.Calendar.The calendar currently used by a specific CultureInfo object is defined by its DateTimeFormatInfo.Calendar property. Il doit s’agir de l’un des calendriers figurant dans le tableau CultureInfo.OptionalCalendars.It must be one of the calendars found in the CultureInfo.OptionalCalendars array.

Le calendrier actuel d’une culture est utilisé dans toutes les opérations de mise en forme pour cette culture.A culture's current calendar is used in all formatting operations for that culture. Par exemple, le calendrier par défaut de la culture Thaï bouddhiste est le calendrier thaï de l’ère bouddhiste, représenté par la classe ThaiBuddhistCalendar.For example, the default calendar of the Thai Buddhist culture is the Thai Buddhist Era calendar, which is represented by the ThaiBuddhistCalendar class. Lorsqu’un objet CultureInfo qui représente la culture Thaï bouddhiste est utilisé dans une opération de mise en forme de date et d’heure, le calendrier thaï de l’ère bouddhiste est utilisé par défaut.When a CultureInfo object that represents the Thai Buddhist culture is used in a date and time formatting operation, the Thai Buddhist Era calendar is used by default. Le calendrier grégorien est utilisé uniquement si la propriété DateTimeFormatInfo.Calendar de la culture est modifiée, comme le montre l’exemple suivant :The Gregorian calendar is used only if the culture's DateTimeFormatInfo.Calendar property is changed, as the following example shows:

[!code-csharpSystem.DateTime.Calendar#1][!code-csharpSystem.DateTime.Calendar#1]

Dim thTH As New CultureInfo("th-TH")
Dim value As New DateTime(2016, 5, 28)

Console.WriteLine(value.ToString(thTH))

thTH.DateTimeFormat.Calendar = New GregorianCalendar()
Console.WriteLine(value.ToString(thTH))
' The example displays the following output:
'       28/5/2559 0:00:00
'       28/5/2016 0:00:00

Le calendrier actuel d’une culture est également utilisé dans toutes les opérations d’analyse pour cette culture, comme le montre l’exemple suivant.A culture's current calendar is also used in all parsing operations for that culture, as the following example shows.

[!code-csharpSystem.DateTime.Calendar#2][!code-csharpSystem.DateTime.Calendar#2]

Private Sub ThaiBuddhistEraParse()
    Dim thTH As New CultureInfo("th-TH")
    Dim value As DateTime = DateTime.Parse("28/5/2559", thTH)
    Console.WriteLine(value.ToString(thTH))

    thTH.DateTimeFormat.Calendar = New GregorianCalendar()
    Console.WriteLine(value.ToString(thTH))
    ' The example displays the following output:
    '       28/5/2559 0:00:00
    '       28/5/2016 0:00:00
End Sub

Vous instanciez une valeur DateTime à l’aide des éléments de date et d’heure (nombre de l’année, du mois et du jour) d’un calendrier spécifique en appelant un constructeur DateTime qui comprend un paramètre calendar et en lui transmettant un objet Calendar qui représente ce calendrier .You instantiate a DateTime value using the date and time elements (number of the year, month, and day) of a specific calendar by calling a DateTime constructor that includes a calendar parameter and passing it a Calendar object that represents that calendar. L’exemple suivant utilise les éléments de date et d’heure du calendrier ThaiBuddhistCalendar.The following example uses the date and time elements from the ThaiBuddhistCalendar calendar.

[!code-csharpSystem.DateTime.Calendar#3][!code-csharpSystem.DateTime.Calendar#3]

Dim thTH As New CultureInfo("th-TH")
Dim dat As New DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar)
Console.WriteLine($"Thai Buddhist Era date: {dat.ToString("d", thTH)}")
Console.WriteLine($"Gregorian date:   {dat:d}")
' The example displays the following output:
'       Thai Buddhist Era Date:  28/5/2559
'       Gregorian Date:     28/05/2016

les constructeurs DateTime qui n’incluent pas de paramètre calendar supposent que les éléments de date et d’heure sont exprimés en tant qu’unités dans le calendrier grégorien.DateTime constructors that do not include a calendar parameter assume that the date and time elements are expressed as units in the Gregorian calendar.

Toutes les autres propriétés et méthodes DateTime utilisent le calendrier grégorien.All other DateTime properties and methods use the Gregorian calendar. Par exemple, la propriété DateTime.Year retourne l’année dans le calendrier grégorien, et la méthode DateTime.IsLeapYear(Int32) suppose que le paramètre year est une année dans le calendrier grégorien.For example, the DateTime.Year property returns the year in the Gregorian calendar, and the DateTime.IsLeapYear(Int32) method assumes that the year parameter is a year in the Gregorian calendar. Chaque membre DateTime qui utilise le calendrier grégorien a un membre correspondant de la classe Calendar qui utilise un calendrier spécifique.Each DateTime member that uses the Gregorian calendar has a corresponding member of the Calendar class that uses a specific calendar. Par exemple, la méthode Calendar.GetYear retourne l’année dans un calendrier spécifique, et la méthode Calendar.IsLeapYear interprète le paramètre year comme un nombre d’années dans un calendrier spécifique.For example, the Calendar.GetYear method returns the year in a specific calendar, and the Calendar.IsLeapYear method interprets the year parameter as a year number in a specific calendar. L’exemple suivant utilise à la fois le DateTime et les membres correspondants de la classe ThaiBuddhistCalendar.The following example uses both the DateTime and the corresponding members of the ThaiBuddhistCalendar class.

[!code-csharpSystem.DateTime.Calendar#4][!code-csharpSystem.DateTime.Calendar#4]

Dim thTH As New CultureInfo("th-TH")
Dim cal As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(2559, 5, 28, cal)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine($"Date: {dat.ToString("d", thTH)}")
Console.WriteLine($"Year: {cal.GetYear(dat)}")
Console.WriteLine($"Leap year: {cal.IsLeapYear(cal.GetYear(dat))}")
Console.WriteLine()

Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine($"Date: {dat:d}")
Console.WriteLine($"Year: {dat.Year}")
Console.WriteLine($"Leap year: {DateTime.IsLeapYear(dat.Year)}")
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :   28/5/2559
'       Year: 2559
'       Leap year :   True
'
'       Using the Gregorian calendar
'       Date :   28/05/2016
'       Year: 2016
'       Leap year :   True

La structure DateTime comprend une propriété DayOfWeek qui retourne le jour de la semaine dans le calendrier grégorien.The DateTime structure includes a DayOfWeek property that returns the day of the week in the Gregorian calendar. Il n’inclut pas de membre qui vous permet de récupérer le numéro de semaine de l’année.It does not include a member that allows you to retrieve the week number of the year. Pour récupérer la semaine de l’année, appelez la méthode Calendar.GetWeekOfYear du calendrier individuel.To retrieve the week of the year, call the individual calendar's Calendar.GetWeekOfYear method. L'exemple suivant illustre cette situation.The following example provides an illustration.

[!code-csharpSystem.DateTime.Calendar#5][!code-csharpSystem.DateTime.Calendar#5]

Dim thTH As New CultureInfo("th-TH")
Dim thCalendar As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(1395, 8, 18, thCalendar)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine($"Date: {dat.ToString("d", thTH)}")
Console.WriteLine($"Day of Week: {thCalendar.GetDayOfWeek(dat)}")
Console.WriteLine($"Week of year: {thCalendar.GetWeekOfYear(dat, CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}")
Console.WriteLine()

Dim greg As Calendar = New GregorianCalendar()
Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine($"Date: {dat:d}")
Console.WriteLine($"Day of Week: {dat.DayOfWeek}")
Console.WriteLine($"Week of year: {greg.GetWeekOfYear(dat, CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}")
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :  18/8/1395
'       Day of Week: Sunday
'       Week of year: 34
'       
'       Using the Gregorian calendar
'       Date :  18/08/0852
'       Day of Week: Sunday
'       Week of year: 34

Pour plus d’informations sur les dates et les calendriers, consultez utilisation des calendriers.For more information on dates and calendars, see Working with Calendars.

Persistance des valeurs DateTimePersisting DateTime values

Vous pouvez conserver les valeurs DateTime de quatre façons :You can persist DateTime values in four ways:

Vous devez vous assurer que la routine qui restaure les valeurs DateTime ne perd pas de données ou ne lève pas d’exception, quelle que soit la technique choisie.You must ensure that the routine that restores the DateTime values doesn't lose data or throw an exception regardless of which technique you choose. les valeurs DateTime doivent aller-retour.DateTime values should round-trip. Autrement dit, la valeur d’origine et la valeur restaurée doivent être identiques.That is, the original value and the restored value should be the same. Et si la valeur DateTime d’origine représente un seul instant, elle doit identifier le même moment lors de sa restauration.And if the original DateTime value represents a single instant of time, it should identify the same moment of time when it's restored.

Persistance des valeurs en tant que chaînesPersisting values as strings

Pour restaurer correctement les valeurs DateTime qui sont conservées sous forme de chaînes, procédez comme suit :To successfully restore DateTime values that are persisted as strings, follow these rules:

  • Faites les mêmes hypothèses sur la mise en forme spécifique à la culture lorsque vous restaurez la chaîne comme lorsque vous l’avez rendue persistante.Make the same assumptions about culture-specific formatting when you restore the string as when you persisted it. Pour garantir qu’une chaîne peut être restaurée sur un système dont la culture actuelle est différente de la culture du système sur lequel elle a été enregistrée, appelez la surcharge ToString pour enregistrer la chaîne à l’aide des conventions de la culture dite indifférente.To ensure that a string can be restored on a system whose current culture is different from the culture of the system it was saved on, call the ToString overload to save the string by using the conventions of the invariant culture. Appelez la surcharge Parse(String, IFormatProvider, DateTimeStyles) ou TryParse(String, IFormatProvider, DateTimeStyles, DateTime) pour restaurer la chaîne à l’aide des conventions de la culture dite indifférente.Call the Parse(String, IFormatProvider, DateTimeStyles) or TryParse(String, IFormatProvider, DateTimeStyles, DateTime) overload to restore the string by using the conventions of the invariant culture. N’utilisez jamais les surcharges ToString(), Parse(String) ou TryParse(String, DateTime), qui utilisent les conventions de la culture de thread actuelle.Never use the ToString(), Parse(String), or TryParse(String, DateTime) overloads, which use the conventions of the current thread culture.

  • Si la date représente un moment précis, assurez-vous qu’elle représente le même moment dans le temps qu’elle est restaurée, même sur un autre fuseau horaire.If the date represents a single moment of time, ensure that it represents the same moment in time when it's restored, even on a different time zone. Convertit la valeur DateTime en temps universel coordonné (UTC, Universal Time Coordinated) avant de l’enregistrer.Convert the DateTime value to Coordinated Universal Time (UTC) before saving it. Vous pouvez également sérialiser la valeur avec les informations de fuseau horaire.You can also serialize the value along with time zone information. Pour plus d’informations sur cette approche, consultez sérialisation de données DateTime et de fuseau horaire.For more information about this approach, see Serializing DateTime and time zone data.

L’erreur la plus courante effectuée lors de la persistance des valeurs DateTime en tant que chaînes consiste à s’appuyer sur les conventions de mise en forme de la culture par défaut ou de la culture actuelle.The most common error made when persisting DateTime values as strings is to rely on the formatting conventions of the default or current culture. Des problèmes surviennent si la culture actuelle est différente lors de l’enregistrement et de la restauration des chaînes.Problems arise if the current culture is different when saving and restoring the strings. L’exemple suivant illustre ces problèmes.The following example illustrates these problems. Elle économise cinq dates à l’aide des conventions de mise en forme de la culture actuelle, qui dans ce cas est l’anglais (États-Unis).It saves five dates using the formatting conventions of the current culture, which in this case is English (United States). Il restaure les dates à l’aide des conventions de mise en forme d’une autre culture, qui dans ce cas est l’anglais (Grande-Bretagne).It restores the dates using the formatting conventions of a different culture, which in this case is English (Great Britain). Étant donné que les conventions de mise en forme des deux cultures sont différentes, deux des dates ne peuvent pas être restaurées et les trois dates restantes sont interprétées de manière incorrecte.Because the formatting conventions of the two cultures are different, two of the dates can't be restored, and the remaining three dates are interpreted incorrectly. En outre, si les valeurs de date et d’heure d’origine représentent des moments uniques dans le temps, les heures restaurées sont incorrectes, car les informations de fuseau horaire sont perdues.Also, if the original date and time values represent single moments in time, the restored times are incorrect because time zone information is lost.

[!code-csharpSystem.DateTime.Persistence#1][!code-csharpSystem.DateTime.Persistence#1]

Public Sub PersistAsLocalStrings()
    SaveDatesAsStrings()
    RestoreDatesAsStrings()
End Sub

Private Sub SaveDatesAsStrings()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToString() + If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues As String() = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParse(inputValue, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       Cannot parse '6/14/2014 6:32:00 AM'
'       '7/10/2014 11:49:00 PM' --> 07 October 2014 23:49
'       '1/10/2015 1:16:00 AM' --> 01 October 2015 01:16
'       Cannot parse '12/20/2014 9:45:00 PM'
'       '6/2/2014 3:14:00 PM' --> 06 February 2014 15:14
'       Restored dates...

Pour effectuer un aller-retour des valeurs DateTime avec succès, procédez comme suit :To round-trip DateTime values successfully, follow these steps:

  1. Si les valeurs représentent des moments uniques, convertissez-les de l’heure locale en heure UTC en appelant la méthode ToUniversalTime.If the values represent single moments of time, convert them from the local time to UTC by calling the ToUniversalTime method.
  2. Convertissez les dates en représentations sous forme de chaîne en appelant la surcharge ToString(String, IFormatProvider) ou String.Format(IFormatProvider, String, Object[]).Convert the dates to their string representations by calling the ToString(String, IFormatProvider) or String.Format(IFormatProvider, String, Object[]) overload. Utilisez les conventions de mise en forme de la culture dite indifférente en spécifiant CultureInfo.InvariantCulture comme argument provider.Use the formatting conventions of the invariant culture by specifying CultureInfo.InvariantCulture as the provider argument. Spécifiez que la valeur doit aller-retour à l’aide de la chaîne de format standard « O » ou « R ».Specify that the value should round-trip by using the "O" or "R" standard format string.

Pour restaurer les valeurs DateTime persistantes sans perte de données, procédez comme suit :To restore the persisted DateTime values without data loss, follow these steps:

  1. Analysez les données en appelant la surcharge ParseExact ou TryParseExact.Parse the data by calling the ParseExact or TryParseExact overload. Spécifiez CultureInfo.InvariantCulture comme argument provider et utilisez la même chaîne de format standard que celle utilisée pour l’argument format lors de la conversion.Specify CultureInfo.InvariantCulture as the provider argument, and use the same standard format string you used for the format argument during conversion. Incluez la valeur DateTimeStyles.RoundtripKind dans l’argument styles.Include the DateTimeStyles.RoundtripKind value in the styles argument.
  2. Si les valeurs DateTime représentent des moments uniques dans le temps, appelez la méthode ToLocalTime pour convertir la date analysée de l’heure UTC en heure locale.If the DateTime values represent single moments in time, call the ToLocalTime method to convert the parsed date from UTC to local time.

L’exemple suivant utilise la culture dite indifférente et la chaîne de format standard "O" pour s’assurer que les valeurs DateTime enregistrées et restaurées représentent le même moment dans le temps, indépendamment du système, de la culture ou du fuseau horaire des systèmes source et cible.The following example uses the invariant culture and the "O" standard format string to ensure that DateTime values saved and restored represent the same moment in time regardless of the system, culture, or time zone of the source and target systems.

[!code-csharpSystem.DateTime.Persistence#2][!code-csharpSystem.DateTime.Persistence#2]

Public Sub PersistAsInvariantStrings()
    SaveDatesAsInvariantStrings()
    RestoreDatesAsInvariantStrings()
End Sub

Private Sub SaveDatesAsInvariantStrings()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToUniversalTime().ToString("O", CultureInfo.InvariantCulture) +
                                   If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsInvariantStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {0}",
                    TimeZoneInfo.Local.DisplayName)
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues As String() = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                          DateTimeStyles.RoundtripKind, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
'       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
'       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
'       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
'       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
'       Restored dates...
Persistance des valeurs en tant qu’entiersPersisting values as integers

Vous pouvez conserver une date et une heure sous la forme d’une valeur Int64 qui représente un nombre de graduations.You can persist a date and time as an Int64 value that represents a number of ticks. Dans ce cas, vous n’avez pas à prendre en compte la culture des systèmes sur lesquels les valeurs DateTime sont conservées et restaurées.In this case, you don't have to consider the culture of the systems the DateTime values are persisted and restored on.

Pour conserver une valeur DateTime sous la forme d’un entier :To persist a DateTime value as an integer:

  • Si les valeurs DateTime représentent des moments uniques dans le temps, convertissez-les en temps UTC en appelant la méthode ToUniversalTime.If the DateTime values represent single moments in time, convert them to UTC by calling the ToUniversalTime method.
  • Récupérez le nombre de graduations représenté par la valeur DateTime de sa propriété Ticks.Retrieve the number of ticks represented by the DateTime value from its Ticks property.

Pour restaurer une valeur DateTime qui a été rendue persistante sous la forme d’un entier :To restore a DateTime value that has been persisted as an integer:

  1. Instanciez un nouvel objet DateTime en passant la valeur Int64 au constructeur DateTime(Int64).Instantiate a new DateTime object by passing the Int64 value to the DateTime(Int64) constructor.
  2. Si la valeur DateTime représente un moment donné dans le temps, convertissez-la de l’heure UTC en heure locale en appelant la méthode ToLocalTime.If the DateTime value represents a single moment in time, convert it from UTC to the local time by calling the ToLocalTime method.

L’exemple suivant conserve un tableau de valeurs DateTime en tant qu’entiers sur un système situé dans le fuseau horaire Pacifique (États-Unis).The following example persists an array of DateTime values as integers on a system in the U.S. Pacific Time zone. Il la restaure sur un système situé dans la zone UTC.It restores it on a system in the UTC zone. Le fichier qui contient les entiers inclut une valeur Int32 qui indique le nombre total de valeurs Int64 qui le suivent immédiatement.The file that contains the integers includes an Int32 value that indicates the total number of Int64 values that immediately follow it.

[!code-csharpSystem.DateTime.Persistence#3][!code-csharpSystem.DateTime.Persistence#3]

Public Sub PersistAsIntegers()
    SaveDatesAsIntegers()
    RestoreDatesAsIntegers()
End Sub

Private Sub SaveDatesAsIntegers()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim ticks(dates.Length - 1) As Long
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        ticks(ctr) = dates(ctr).ToUniversalTime().Ticks
    Next
    Dim fs As New FileStream(filenameInts, FileMode.Create)
    Dim bw As New BinaryWriter(fs)
    bw.Write(ticks.Length)
    For Each tick In ticks
        bw.Write(tick)
    Next
    bw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsIntegers()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim fs As New FileStream(filenameInts, FileMode.Open)
    Dim br As New BinaryReader(fs)
    Dim items As Integer
    Dim dates As DateTime()

    Try
        items = br.ReadInt32()
        ReDim dates(items - 1)

        For ctr As Integer = 0 To items - 1
            Dim ticks As Long = br.ReadInt64()
            dates(ctr) = New DateTime(ticks).ToLocalTime()
        Next
    Catch e As EndOfStreamException
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Catch e As IOException
        Console.WriteLine("Unspecified I/O error. Unable to restore data...")
        Exit Sub
    Catch e As OutOfMemoryException     'Thrown in array initialization.
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Finally
        br.Close()
    End Try

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       14 June 2014 14:32
'       11 July 2014 07:49
'       10 January 2015 09:16
'       21 December 2014 05:45
'       02 June 2014 23:14
'       Restored dates...

Sérialisation des valeurs DateTimeSerializing DateTime values

Vous pouvez conserver les valeurs DateTime par le biais de la sérialisation dans un flux ou un fichier, puis les restaurer via la désérialisation.You can persist DateTime values through serialization to a stream or file, and then restore them through deserialization. les données DateTime sont sérialisées dans un format d’objet spécifié.DateTime data is serialized in some specified object format. Les objets sont restaurés lorsqu’ils sont désérialisés.The objects are restored when they are deserialized. Un module de formatage ou un sérialiseur, tel que XmlSerializer ou BinaryFormatter, gère le processus de sérialisation et de désérialisation.A formatter or serializer, such as XmlSerializer or BinaryFormatter, handles the process of serialization and deserialization. Pour plus d’informations sur la sérialisation et les types de sérialisation pris en charge par le .NET Framework, consultez sérialisation.For more information about serialization and the types of serialization supported by the .NET Framework, see Serialization.

L’exemple suivant utilise la classe XmlSerializer pour sérialiser et désérialiser les valeurs DateTime.The following example uses the XmlSerializer class to serialize and deserialize DateTime values. Les valeurs représentent tous les jours de l’année bissextile du vingt-et-unième siècle.The values represent all leap year days in the twenty-first century. La sortie représente le résultat si l’exemple est exécuté sur un système dont la culture actuelle est l’anglais (Grande-Bretagne).The output represents the result if the example is run on a system whose current culture is English (Great Britain). Étant donné que vous avez désérialisé l’objet DateTime lui-même, le code n’a pas à gérer les différences culturelles dans les formats de date et d’heure.Because you've deserialized the DateTime object itself, the code doesn't have to handle cultural differences in date and time formats.

[!code-csharpSystem.DateTime.Persistence#4][!code-csharpSystem.DateTime.Persistence#4]

Public Sub PersistAsXml()
    ' Serialize the data.
    Dim leapYears As New List(Of DateTime)()
    For year As Integer = 2000 To 2100 Step 4
        If Date.IsLeapYear(year) Then
            leapYears.Add(New Date(year, 2, 29))
        End If
    Next
    Dim dateArray As DateTime() = leapYears.ToArray()

    Dim serializer As New XmlSerializer(dateArray.GetType())
    Dim sw As TextWriter = New StreamWriter(filenameXml)

    Try
        serializer.Serialize(sw, dateArray)
    Catch e As InvalidOperationException
        Console.WriteLine(e.InnerException.Message)
    Finally
        If sw IsNot Nothing Then sw.Close()
    End Try

    ' Deserialize the data.
    Dim deserializedDates As Date()
    Using fs As New FileStream(filenameXml, FileMode.Open)
        deserializedDates = CType(serializer.Deserialize(fs), Date())
    End Using

    ' Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim nItems As Integer
    For Each dat In deserializedDates
        Console.Write($"   {dat:d}     ")
        nItems += 1
        If nItems Mod 5 = 0 Then Console.WriteLine()
    Next
End Sub
' The example displays the following output:
'    Leap year days from 2000-2100 on an en-GB system:
'       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
'       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
'       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
'       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
'       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096

L’exemple précédent n’inclut pas d’informations d’heure.The previous example doesn't include time information. Si une valeur DateTime représente un moment dans le temps et est exprimé comme une heure locale, convertissez-la de l’heure locale en heure UTC avant de la sérialiser en appelant la méthode ToUniversalTime.If a DateTime value represents a moment in time and is expressed as a local time, convert it from local time to UTC before serializing it by calling the ToUniversalTime method. Après la désérialisation, convertissez-la de l’heure UTC en heure locale en appelant la méthode ToLocalTime.After you deserialize it, convert it from UTC to local time by calling the ToLocalTime method. L’exemple suivant utilise la classe BinaryFormatter pour sérialiser les données DateTime sur un système situé dans le fuseau horaire Fuseau horaire Pacifique et pour le désérialiser sur un système situé aux États-Unis Zone centrale standard.The following example uses the BinaryFormatter class to serialize DateTime data on a system in the U.S. Pacific Standard Time zone and to deserialize it on a system in the U.S. Central Standard zone.

[!code-csharpSystem.DateTime.Persistence#5][!code-csharpSystem.DateTime.Persistence#5]

Public Sub PersistBinary()
    SaveDatesBinary()
    RestoreDatesBinary()
End Sub

Private Sub SaveDatesBinary()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim fs As New FileStream(filenameBin, FileMode.Create)
    Dim bin As New BinaryFormatter()

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        dates(ctr) = dates(ctr).ToUniversalTime()
    Next
    bin.Serialize(fs, dates)
    fs.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesBinary()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

    Dim fs As New FileStream(filenameBin, FileMode.Open)
    Dim bin As New BinaryFormatter()
    Dim dates As DateTime() = DirectCast(bin.Deserialize(fs), Date())
    fs.Close()

    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToLocalTime().ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
'       The dates on an en-GB system:
'       14 June 2014 08:32
'       11 July 2014 01:49
'       10 January 2015 03:16
'       20 December 2014 11:45
'       02 June 2014 17:14
'       Restored dates...

Sérialisation des données DateTime et de fuseau horaireSerializing DateTime and time zone data

Les exemples précédents supposaient que les valeurs DateTime sont exprimées en tant qu’heures locales.The previous examples all assumed that DateTime values are expressed as local times. Le code convertit les valeurs entre l’heure UTC et l’heure locale afin qu’elles reflètent le même moment dans le temps sur les systèmes source et cible.The code converted the values between UTC and local time so they reflect the same moment in time on the source and target systems. les valeurs DateTime peuvent également refléter les moments dans le temps dans un fuseau horaire différent de l’heure locale et de l’heure UTC.DateTime values may also reflect moments in time in a time zone other than local and UTC. Étant donné que la structure DateTime ne prend pas en charge les fuseaux horaires, vous devez sérialiser la valeur DateTime et l’objet TimeZoneInfo qui représente son fuseau horaire.Because the DateTime structure is not time zone-aware, you have to serialize both the DateTime value and the TimeZoneInfo object that represents its time zone. Créez un type dont les champs incluent à la fois la valeur DateTime et son fuseau horaire.Create a type whose fields include both the DateTime value and its time zone. L’exemple suivant définit une structure DateWithTimeZone.The following example defines a DateWithTimeZone structure.

[!code-csharpSystem.DateTime.Persistence#6][!code-csharpSystem.DateTime.Persistence#6]

Namespace DateTimeExtensions
    <Serializable> Public Structure DateWithTimeZone
        Private tz As TimeZoneInfo
        Private dt As DateTime

        Public Sub New(dateValue As DateTime, timeZone As TimeZoneInfo)
            dt = dateValue
            tz = If(timeZone, TimeZoneInfo.Local)
        End Sub

        Public Property TimeZone As TimeZoneInfo
            Get
                Return tz
            End Get
            Set
                tz = Value
            End Set
        End Property

        Public Property DateTime As Date
            Get
                Return dt
            End Get
            Set
                dt = Value
            End Set
        End Property
    End Structure
End Namespace

Important

La structure DateWithTimeZone est utilisée dans les deux exemples suivants, qui sérialisent et désérialisent un tableau d’objets DateWithTimeZone.The DateWithTimeZone structure is used in the next two examples, which serialize and deserialize an array of DateWithTimeZone objects. Vous pouvez afficher la source de l’ensemble complet d’exemples à partir de cet article dans Visual Basic C# ou à partir du référentiel docs sur GitHub.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

À l’aide de la structure DateWithTimeZone, vous pouvez alors conserver la date et l’heure, ainsi que les informations de fuseau horaire.By using the DateWithTimeZone structure, you can then persist date and time along with time zone information. L’exemple suivant utilise la classe BinaryFormatter pour sérialiser un tableau d’objets DateWithTimeZone.The following example uses the BinaryFormatter class to serialize an array of DateWithTimeZone objects.

public static void SaveDateWithTimeZone()
{
    DateWithTimeZone[] dates = { new DateWithTimeZone(new DateTime(2014, 8, 9, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 15, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 22, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 28, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")) };
    var fs = new FileStream(@".\Schedule.bin", FileMode.Create);
    var formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, dates);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Serialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub SaveDateWithTimeZone()
    Dim dates As DateWithTimeZone() = {New DateWithTimeZone(#8/9/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/15/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                                  New DateWithTimeZone(#8/22/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/28/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))}
    Dim fs As New FileStream(".\Schedule.bin", FileMode.Create)
    Dim formatter As New BinaryFormatter()
    Try
        formatter.Serialize(fs, dates)
    Catch e As SerializationException
        Console.WriteLine($"Serialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
    ' Display dates.
    For Each dateInfo In dates
        Dim tz As TimeZoneInfo = dateInfo.TimeZone
        Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
    Next
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

L’exemple suivant appelle ensuite la méthode BinaryFormatter.Deserialize pour le désérialiser.The following example then calls the BinaryFormatter.Deserialize method to deserialize it.

public static void RestoreDateWithTimeZone()
{
    const string filename = @".\Schedule.bin";
    FileStream fs;
    if (File.Exists(filename))
        fs = new FileStream(filename, FileMode.Open);
    else
    {
        Console.WriteLine("Unable to find file to deserialize.");
        return;
    }

    var formatter = new BinaryFormatter();
    DateWithTimeZone[] dates;
    try
    {
        dates = (DateWithTimeZone[])formatter.Deserialize(fs);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{ date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Deserialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub RestoreDateWithTimeZone()
    Dim fs As FileStream
    If File.Exists(filename) Then
        fs = New FileStream(filename, FileMode.Open)
    Else
        Console.WriteLine("Unable to find file to deserialize.")
        Exit Sub
    End If

    Dim formatter As New BinaryFormatter()
    Dim dates As DateWithTimeZone ()= Nothing
    Try
        dates = DirectCast(formatter.Deserialize(fs), DateWithTimeZone())
        ' Display dates.
        For Each dateInfo In dates
            Dim tz As TimeZoneInfo = dateInfo.TimeZone
            Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
        Next
    Catch e As SerializationException
        Console.WriteLine("Deserialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

DateTime et TimeSpanDateTime vs. TimeSpan

Les types de valeur DateTime et TimeSpan diffèrent en ce qu’un DateTime représente un instant, tandis qu’un TimeSpan représente un intervalle de temps.The DateTime and TimeSpan value types differ in that a DateTime represents an instant in time whereas a TimeSpan represents a time interval. Vous pouvez soustraire une instance de DateTime d’une autre pour obtenir un objet TimeSpan qui représente l’intervalle de temps entre eux.You can subtract one instance of DateTime from another to obtain a TimeSpan object that represents the time interval between them. Ou vous pouvez ajouter un @no__t positif-0 au @no__t actuel-1 pour obtenir une valeur DateTime qui représente une date ultérieure.Or you could add a positive TimeSpan to the current DateTime to obtain a DateTime value that represents a future date.

Vous pouvez ajouter ou soustraire un intervalle de temps à partir d’un objet DateTime.You can add or subtract a time interval from a DateTime object. Les intervalles de temps peuvent être négatifs ou positifs et peuvent être exprimés par des unités telles que des graduations, des secondes ou comme un objet TimeSpan.Time intervals can be negative or positive, and they can be expressed in units such as ticks, seconds, or as a TimeSpan object.

Comparaison de l’égalité dans la toléranceComparing for equality within tolerance

Les comparaisons d’égalité pour les valeurs DateTime sont exactes.Equality comparisons for DateTime values are exact. Cela signifie que deux valeurs doivent être exprimées sous la forme d’un nombre de graduations à considérer comme égal.That means two values must be expressed as the same number of ticks to be considered equal. Cette précision est souvent inutile ou même incorrecte pour de nombreuses applications.That precision is often unnecessary or even incorrect for many applications. Souvent, vous souhaitez tester si les objets DateTime sont à peu près égaux.Often, you want to test if DateTime objects are roughly equal.

L’exemple suivant montre comment comparer des valeurs DateTime à peu près équivalentes.The following example demonstrates how to compare roughly equivalent DateTime values. Elle accepte une petite marge de différence lorsqu’elle est déclarée comme égale.It accepts a small margin of difference when declaring them equal.

[!code-csharpSystem.DateTime.Comparisons#1][!code-csharpSystem.DateTime.Comparisons#1]

Public Shared Function RoughlyEquals(time As DateTime, timeWithWindow As DateTime,
                             windowInSeconds As Integer,
                             frequencyInSeconds As Integer) As Boolean
    Dim delta As Long = (timeWithWindow.Subtract(time)).TotalSeconds _
                                            Mod frequencyInSeconds

    If delta > windowInSeconds Then
        delta = frequencyInSeconds - delta
    End If

    Return Math.Abs(delta) < windowInSeconds
End Function

Public Shared Sub TestRoughlyEquals()
    Dim window As Integer = 10
    Dim freq As Integer = 60 * 60 * 2 ' 2 hours;
    Dim d1 As DateTime = DateTime.Now

    Dim d2 As DateTime = d1.AddSeconds(2 * window)
    Dim d3 As DateTime = d1.AddSeconds(-2 * window)
    Dim d4 As DateTime = d1.AddSeconds(window / 2)
    Dim d5 As DateTime = d1.AddSeconds(-window / 2)

    Dim d6 As DateTime = d1.AddHours(2).AddSeconds(2 * window)
    Dim d7 As DateTime = d1.AddHours(2).AddSeconds(-2 * window)
    Dim d8 As DateTime = d1.AddHours(2).AddSeconds(window / 2)
    Dim d9 As DateTime = d1.AddHours(2).AddSeconds(-window / 2)

    Console.WriteLine($"d1 ({d1}) ~= d1 ({d1}): {RoughlyEquals(d1, d1, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d2 ({d2}): {RoughlyEquals(d1, d2, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d3 ({d3}): {RoughlyEquals(d1, d3, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d4 ({d4}): {RoughlyEquals(d1, d4, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d5 ({d5}): {RoughlyEquals(d1, d5, window, freq)}")

    Console.WriteLine($"d1 ({d1}) ~= d6 ({d6}): {RoughlyEquals(d1, d6, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d7 ({d7}): {RoughlyEquals(d1, d7, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d8 ({d8}): {RoughlyEquals(d1, d8, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d9 ({d9}): {RoughlyEquals(d1, d9, window, freq)}")
End Sub
' 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

Considérations relatives au COM InteropCOM interop considerations

Une valeur DateTime qui est transférée vers une application COM, puis retransférée vers une application managée, est dite aller-retour.A DateTime value that is transferred to a COM application, then is transferred back to a managed application, is said to round-trip. Toutefois, une valeur DateTime qui spécifie uniquement une heure n’effectue pas d’aller-retour comme vous pouvez vous y attendre.However, a DateTime value that specifies only a time does not round-trip as you might expect.

Si vous aller-retour uniquement à une heure, par exemple 3 P.M., la date et l’heure finales sont le 30 décembre 1899 (notre ère).If you round-trip only a time, such as 3 P.M., the final date and time is December 30, 1899 C.E. à 3:00 h 00 au lieu du 1er janvier 0001 (notre ère)at 3:00 P.M., instead of January, 1, 0001 C.E. à 3:00 h 00at 3:00 P.M. Les .NET Framework et COM supposent une date par défaut lorsque seule une heure est spécifiée.The .NET Framework and COM assume a default date when only a time is specified. Toutefois, le système COM suppose une date de base du 30 décembre 1899 (notre ère), tandis que le .NET Framework suppose une date de base du 1er janvier 0001 (notre ère).However, the COM system assumes a base date of December 30, 1899 C.E., while the .NET Framework assumes a base date of January, 1, 0001 C.E.

Quand seule une heure est passée de l' .NET Framework à COM, un traitement spécial est effectué, qui convertit l’heure au format utilisé par COM.When only a time is passed from the .NET Framework to COM, special processing is performed that converts the time to the format used by COM. Quand seule une heure est passée de COM au .NET Framework, aucun traitement spécial n’est effectué car cela corromprait les dates et les heures légitimes au plus tard le 30 décembre 1899.When only a time is passed from COM to the .NET Framework, no special processing is performed because that would corrupt legitimate dates and times on or before December 30, 1899. Si une date commence son aller-retour à partir de COM, les .NET Framework et COM conservent la date.If a date starts its round-trip from COM, the .NET Framework and COM preserve the date.

Le comportement de l' .NET Framework et de COM signifie que si votre application effectue un aller-retour d’une DateTime qui spécifie uniquement une heure, votre application doit se souvenir de modifier ou d’ignorer la date erronée de l’objet DateTime final.The behavior of the .NET Framework and COM means that if your application round-trips a DateTime that only specifies a time, your application must remember to modify or ignore the erroneous date from the final DateTime object.

Constructeurs

DateTime(Int32, Int32, Int32)

Initialise une nouvelle instance de la structure DateTime avec l'année, le mois et le jour spécifiés.Initializes a new instance of the DateTime structure to the specified year, month, and day.

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é.Initializes a new instance of the DateTime structure to the specified year, month, and day for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32)

Initialise une nouvelle instance de la structure DateTime avec l'année, le mois, le jour, l'heure, la minute et la seconde spécifiés.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second.

DateTime(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 et la seconde spécifiés pour le calendrier spécifié.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second for the specified calendar.

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.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

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.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond.

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é.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond for the specified calendar.

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é.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time for the specified calendar.

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.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time.

DateTime(Int64)

Initialise une nouvelle instance de la structure DateTime avec le nombre de graduations spécifié.Initializes a new instance of the DateTime structure to a specified number of ticks.

DateTime(Int64, DateTimeKind)

Initialise une nouvelle instance de la structure DateTime avec un nombre spécifié de graduations et une heure UTC ou locale.Initializes a new instance of the DateTime structure to a specified number of ticks and to Coordinated Universal Time (UTC) or local time.

Champs

MaxValue

Représente la plus grande valeur possible de DateTime.Represents the largest possible value of DateTime. Ce champ est en lecture seule.This field is read-only.

MinValue

Représente la plus petite valeur possible de DateTime.Represents the smallest possible value of DateTime. Ce champ est en lecture seule.This field is read-only.

UnixEpoch

Propriétés

Date

Obtient le composant « date » de cette instance.Gets the date component of this instance.

Day

Obtient le jour du mois représenté par cette instance.Gets the day of the month represented by this instance.

DayOfWeek

Obtient le jour de semaine représenté par cette instance.Gets the day of the week represented by this instance.

DayOfYear

Obtient le jour de l'année représenté par cette instance.Gets the day of the year represented by this instance.

Hour

Obtient le composant « heure » de la date représentée par cette instance.Gets the hour component of the date represented by this 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.Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither.

Millisecond

Obtient le composant « millisecondes » de la date représentée par cette instance.Gets the milliseconds component of the date represented by this instance.

Minute

Obtient le composant « minutes » de la date représentée par cette instance.Gets the minute component of the date represented by this instance.

Month

Obtient le composant « mois » de la date représentée par cette instance.Gets the month component of the date represented by this instance.

Now

Obtient un objet DateTime qui a pour valeur la date et l'heure actuelles sur cet ordinateur, exprimées en heure locale.Gets a DateTime object that is set to the current date and time on this computer, expressed as the local time.

Second

Obtient le composant « secondes » de la date représentée par cette instance.Gets the seconds component of the date represented by this instance.

Ticks

Obtient le nombre de graduations représentant la date et l'heure de cette instance.Gets the number of ticks that represent the date and time of this instance.

TimeOfDay

Obtient l'heure de cette instance.Gets the time of day for this instance.

Today

Obtient la date actuelle.Gets the current date.

UtcNow

Obtient un objet DateTime qui a pour valeur la date et l'heure actuelles sur cet ordinateur, exprimées en temps UTC.Gets a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).

Year

Obtient le composant « année » de la date représentée par cette instance.Gets the year component of the date represented by this instance.

Méthodes

Add(TimeSpan)

Retourne un nouveau DateTime qui ajoute la valeur du TimeSpan spécifié à la valeur de cette instance.Returns a new DateTime that adds the value of the specified TimeSpan to the value of this instance.

AddDays(Double)

Retourne un nouveau DateTime qui ajoute le nombre de jours spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of days to the value of this instance.

AddHours(Double)

Retourne un nouveau DateTime qui ajoute le nombre d'heures spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of hours to the value of this instance.

AddMilliseconds(Double)

Retourne un nouveau DateTime qui ajoute le nombre de millisecondes spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of milliseconds to the value of this instance.

AddMinutes(Double)

Retourne un nouveau DateTime qui ajoute le nombre de minutes spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of minutes to the value of this instance.

AddMonths(Int32)

Retourne un nouveau DateTime qui ajoute le nombre de mois spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of months to the value of this instance.

AddSeconds(Double)

Retourne un nouveau DateTime qui ajoute le nombre de secondes spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of seconds to the value of this instance.

AddTicks(Int64)

Retourne un nouveau DateTime qui ajoute le nombre de graduations spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of ticks to the value of this instance.

AddYears(Int32)

Retourne un nouveau DateTime qui ajoute le nombre d'années spécifié à la valeur de cette instance.Returns a new DateTime that adds the specified number of years to the value of this instance.

Compare(DateTime, DateTime)

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.Compares two instances of DateTime and returns an integer that indicates whether the first instance is earlier than, the same as, or later than the second 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 DateTime spécifiée.Compares the value of this instance to a specified DateTime value and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

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.Compares the value of this instance to a specified object that contains a specified DateTime value, and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

DaysInMonth(Int32, Int32)

Retourne le nombre de jours compris dans le mois et l'année spécifiés.Returns the number of days in the specified month and year.

Equals(DateTime)

Renvoie une valeur indiquant si la valeur de cette instance est égale à la valeur de l'instance DateTime spécifiée.Returns a value indicating whether the value of this instance is equal to the value of the specified DateTime instance.

Equals(DateTime, DateTime)

Retourne une valeur indiquant si deux instances de DateTime représentent la même valeur de date et d'heure.Returns a value indicating whether two DateTime instances have the same date and time value.

Equals(Object)

Retourne une valeur indiquant si cette instance équivaut à un objet spécifié.Returns a value indicating whether this instance is equal to a specified object.

FromBinary(Int64)

Désérialise une valeur binaire 64 bits et recrée un objet DateTime sérialisé d'origine.Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

FromFileTime(Int64)

Convertit l'heure de fichier Windows spécifiée en heure locale équivalente.Converts the specified Windows file time to an equivalent local time.

FromFileTimeUtc(Int64)

Convertit l'heure de fichier Windows spécifiée en heure UTC équivalente.Converts the specified Windows file time to an equivalent UTC time.

FromOADate(Double)

Retourne un DateTime qui équivaut à la date OLE Automation spécifiée.Returns a DateTime equivalent to the specified OLE Automation Date.

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.Converts the value of this instance to all the string representations supported by the standard date and time format specifiers.

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é.Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier.

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.Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier and culture-specific formatting information.

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.Converts the value of this instance to all the string representations supported by the standard date and time format specifiers and the specified culture-specific formatting information.

GetHashCode()

Retourne le code de hachage de cette instance.Returns the hash code for this instance.

GetTypeCode()

Retourne le TypeCode du type valeur DateTime.Returns the TypeCode for value type DateTime.

IsDaylightSavingTime()

Indique si cette instance de DateTime est dans la plage d'heures d'été pour le fuseau horaire actuel.Indicates whether this instance of DateTime is within the daylight saving time range for the current time zone.

IsLeapYear(Int32)

Retourne une indication confirmant si l'année spécifiée est une année bissextile.Returns an indication whether the specified year is a leap year.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Convertit une étendue de mémoire contenant la représentation sous forme de chaîne d’une date/heure en son équivalent DateTime en utilisant les informations de format propres à la culture et un style de mise en forme.Converts a memory span that contains string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

Parse(String)

Convertit la représentation sous forme de chaîne d’une date/heure en son équivalent DateTime en utilisant les conventions de la culture du thread actuel.Converts the string representation of a date and time to its DateTime equivalent by using the conventions of the current thread culture.

Parse(String, IFormatProvider)

Convertit la représentation sous forme de chaîne d'une date et d'une heure en DateTime équivalent à l'aide des informations de format propres à la culture.Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information.

Parse(String, IFormatProvider, DateTimeStyles)

Convertit la représentation sous forme de chaîne d’une date/heure en son équivalent DateTime en utilisant les informations de format propres à la culture et un style de mise en forme.Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
ParseExact(String, String, IFormatProvider)

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 propres à la culture et au format spécifiés.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Le format de la représentation sous forme de chaîne doit correspondre exactement au format spécifié.The format of the string representation must match the specified format exactly.

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.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Le format de la représentation sous forme de chaîne doit correspondre exactement au format spécifié, ou une exception est levée.The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Convertit la représentation sous forme de chaîne spécifiée d'une date et heure en son équivalent DateTime à l'aide du tableau de formats, des informations et du style de format propres à la culture spécifiés.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 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.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

SpecifyKind(DateTime, DateTimeKind)

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.Creates a new DateTime object that has the same number of ticks as the specified DateTime, but is designated as either local time, Coordinated Universal Time (UTC), or neither, as indicated by the specified DateTimeKind value.

Subtract(DateTime)

Retourne un nouveau DateTime qui soustrait la date et l’heure spécifiées de la valeur de cette instance.Returns a new DateTime that subtracts the specified date and time from the value of this instance.

Subtract(TimeSpan)

Retourne un nouveau DateTime qui soustrait la durée spécifiée de la valeur de cette instance.Returns a new DateTime that subtracts the specified duration from the value of this instance.

ToBinary()

Sérialise l'objet DateTime actuel en une valeur binaire 64 bits qui pourra ensuite être utilisée pour recréer l'objet DateTime.Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object.

ToFileTime()

Convertit la valeur de l'objet DateTime actuel en heure de fichier Windows.Converts the value of the current DateTime object to a Windows file time.

ToFileTimeUtc()

Convertit la valeur de l'objet DateTime actuel en heure de fichier Windows.Converts the value of the current DateTime object to a Windows file time.

ToLocalTime()

Convertit la valeur de l'objet DateTime actuel en heure locale.Converts the value of the current DateTime object to local time.

ToLongDateString()

Convertit la valeur de l'objet DateTime actuel en sa représentation sous forme de chaîne de date longue équivalente.Converts the value of the current DateTime object to its equivalent long date string representation.

ToLongTimeString()

Convertit la valeur de l'objet DateTime actuel en sa représentation sous forme de chaîne d'heure longue équivalente.Converts the value of the current DateTime object to its equivalent long time string representation.

ToOADate()

Convertit la valeur de cette instance en date OLE Automation équivalente.Converts the value of this instance to the equivalent OLE Automation date.

ToShortDateString()

Convertit la valeur de l'objet DateTime actuel en sa représentation sous forme de chaîne de date courte équivalente.Converts the value of the current DateTime object to its equivalent short date string representation.

ToShortTimeString()

Convertit la valeur de l'objet DateTime actuel en sa représentation sous forme de chaîne d'heure courte équivalente.Converts the value of the current DateTime object to its equivalent short time string representation.

ToString()

Convertit la valeur de l’objet DateTime actuel en sa représentation sous forme de chaîne équivalente à l’aide des conventions de mise en forme de la culture actuelle.Converts the value of the current DateTime object to its equivalent string representation using the formatting conventions of the current culture.

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.Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

ToString(String)

Convertit la valeur de l’objet DateTime actuel en sa représentation sous forme de chaîne équivalente à l’aide du format spécifié et des conventions de mise en forme de la culture actuelle.Converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture.

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.Converts the value of the current DateTime object to its equivalent string representation using the specified format and culture-specific format information.

ToUniversalTime()

Convertit la valeur de l'objet DateTime actuel en Temps universel coordonné (UTC).Converts the value of the current DateTime object to Coordinated Universal Time (UTC).

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)
TryParse(ReadOnlySpan<Char>, DateTime)
TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
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.Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

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 spécifiés, et retourne une valeur qui indique si la conversion a réussi.Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
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.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Le format de la représentation sous forme de chaîne doit correspondre exactement au format spécifié.The format of the string representation must match the specified format exactly. La méthode retourne une valeur qui indique si la conversion a réussi.The method returns a value that indicates whether the conversion succeeded.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

Convertit la représentation sous forme de chaîne spécifiée d'une date et heure en son équivalent DateTime à l'aide du tableau de formats, des informations et du style de format propres à la culture spécifiés.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Le format de la chaîne doit correspondre exactement à au moins un des formats spécifiés.The format of the string representation must match at least one of the specified formats exactly. La méthode retourne une valeur qui indique si la conversion a réussi.The method returns a value that indicates whether the conversion succeeded.

Opérateurs

Addition(DateTime, TimeSpan)

Ajoute un intervalle de temps spécifié à une date et une heure spécifiées, générant une nouvelle date et heure.Adds a specified time interval to a specified date and time, yielding a new date and time.

Equality(DateTime, DateTime)

Détermine si deux instances spécifiées de DateTime sont égales.Determines whether two specified instances of DateTime are equal.

GreaterThan(DateTime, DateTime)

Détermine si un DateTime spécifié est ultérieur à un autre DateTime spécifié.Determines whether one specified DateTime is later than another specified DateTime.

GreaterThanOrEqual(DateTime, DateTime)

Détermine si un DateTime spécifié représente une date et une heure identiques ou ultérieures à un autre DateTime spécifié.Determines whether one specified DateTime represents a date and time that is the same as or later than another specified DateTime.

Inequality(DateTime, DateTime)

Détermine si deux instances spécifiées de DateTime ne sont pas égales.Determines whether two specified instances of DateTime are not equal.

LessThan(DateTime, DateTime)

Détermine si un DateTime spécifié est antérieur à un autre DateTime spécifié.Determines whether one specified DateTime is earlier than another specified DateTime.

LessThanOrEqual(DateTime, DateTime)

Détermine si un DateTime spécifié représente une date et une heure identiques ou antérieures à un autre DateTime spécifié.Determines whether one specified DateTime represents a date and time that is the same as or earlier than another specified DateTime.

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.Subtracts a specified date and time from another specified date and time and returns a time interval.

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.Subtracts a specified time interval from a specified date and time and returns a new date and time.

Implémentations d’interfaces explicites

IComparable.CompareTo(Object)
IConvertible.GetTypeCode()
IConvertible.ToBoolean(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToChar(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToDateTime(IFormatProvider)

Retourne l'objet DateTime actuel.Returns the current DateTime object.

IConvertible.ToDecimal(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt32(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt64(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToSByte(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToSingle(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToType(Type, IFormatProvider)

Convertit l'objet DateTime actuel en un objet de type spécifié.Converts the current DateTime object to an object of a specified type.

IConvertible.ToUInt16(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt32(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt64(IFormatProvider)

Cette conversion n'est pas prise en charge.This conversion is not supported. Toute tentative d'utilisation de cette méthode lève une InvalidCastException.Attempting to use this method throws an InvalidCastException.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Remplit un objet SerializationInfo des données nécessaires à la sérialisation de l'objet DateTime actuel.Populates a SerializationInfo object with the data needed to serialize the current DateTime object.

S’applique à

Cohérence de thread

Tous les membres de ce type sont thread-safe.All members of this type are thread safe. Les membres qui semblent modifier l’état de l’instance retournent en fait une nouvelle instance initialisée avec la nouvelle valeur.Members that appear to modify instance state actually return a new instance initialized with the new value. Comme pour tout autre type, la lecture et l’écriture dans 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.As with any other type, reading and writing to a shared variable that contains an instance of this type must be protected by a lock to guarantee thread safety.

Voir aussi