Choisir entre DateTime, DateTimeOffset, TimeSpan et TimeZoneInfoChoosing between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo

Les applications .NET qui utilisent des informations de date et d’heure sont très diverses et peuvent utiliser ces informations de plusieurs façons..NET applications that use date and time information are very diverse and can use that information in several ways. Les utilisations les plus courantes des informations de date et d'heure sont une ou plusieurs parmi les suivantes :The more common uses of date and time information include one or more of the following:

  • Pour refléter seulement une date, les informations d'heure n'étant pas importantes.To reflect a date only, so that time information is not important.

  • Pour refléter seulement une heure, les informations de date n'étant pas importantes.To reflect a time only, so that date information is not important.

  • Pour refléter une date et une heure abstraites, qui ne sont pas liées à un moment et un endroit spécifiques (par exemple, la plupart des magasins d'une chaîne internationale ouvrent en semaine à 9h00).To reflect an abstract date and time that is not tied to a specific time and place (for example, most stores in an international chain open on weekdays at 9:00 A.M.).

  • Pour récupérer des informations de date et d’heure à partir de sources en dehors de .NET, en général, où les informations de date et d’heure sont stockées dans un type de données simple.To retrieve date and time information from sources outside of .NET, typically where date and time information is stored in a simple data type.

  • Pour identifier de façon univoque et non ambiguë un point unique dans le temps.To uniquely and unambiguously identify a single point in time. Certaines applications requièrent qu'une date/heure soit ambiguë seulement sur le système hôte. D'autres requièrent qu'elle soit non ambiguë entre les systèmes (autrement dit, une date sérialisée sur un système peut être désérialisée de manière significative et utilisée sur un autre système n'importe où dans le monde).Some applications require that a date and time be unambiguous only on the host system; others require that it be unambiguous across systems (that is, a date serialized on one system can be meaningfully deserialized and used on another system anywhere in the world).

  • Pour conserver plusieurs dates/heures ayant un lien les unes avec les autres (comme la date/heure locale du demandeur et la date/heure de réception par le serveur d'une demande web).To preserve multiple related times (such as the requestor's local time and the server's time of receipt for a Web request).

  • Pour effectuer des calculs de date et d'heure, éventuellement avec un résultat qui identifie de façon univoque et non ambiguë un point unique dans le temps.To perform date and time arithmetic, possibly with a result that uniquely and unambiguously identifies a single point in time.

.Net comprend les DateTimetypes DateTimeOffset, TimeSpan, et TimeZoneInfo , qui peuvent tous être utilisés pour créer des applications qui fonctionnent avec des dates et des heures..NET includes the DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo types, all of which can be used to build applications that work with dates and times.

Notes

Cette rubrique ne traite TimeZone pas du fait que sa fonctionnalité est presque entièrement TimeZoneInfo incorporée dans la classe.This topic doesn't discuss TimeZone because its functionality is almost entirely incorporated in the TimeZoneInfo class. Dans la mesure du possible TimeZoneInfo , utilisez la classe TimeZone au lieu de la classe.Whenever possible, use the TimeZoneInfo class instead of the TimeZone class.

La structure DateTimeThe DateTime structure

Une valeur DateTime définit une date/heure spécifique.A DateTime value defines a particular date and time. Il inclut une Kind propriété qui fournit des informations limitées sur le fuseau horaire auquel cette date et cette heure appartiennent.It includes a Kind property that provides limited information about the time zone to which that date and time belongs. La valeur DateTimeKind retournée par la propriété Kind indique si la valeur DateTime représente la date/heure locale (DateTimeKind.Local), la date/heure UTC (DateTimeKind.Utc) ou une date/heure non spécifiée (DateTimeKind.Unspecified).The DateTimeKind value returned by the Kind property indicates whether the DateTime value represents the local time (DateTimeKind.Local), Coordinated Universal Time (UTC) (DateTimeKind.Utc), or an unspecified time (DateTimeKind.Unspecified).

La structure DateTime convient pour les applications qui :The DateTime structure is suitable for applications that do the following:

  • Utilisent seulement des dates.Work with dates only.

  • Utilisent seulement des heures.Work with times only.

  • Utilisent des dates et des heures abstraites.Work with abstract dates and times.

  • Utilisent des dates et des heures pour lesquelles les informations de fuseau horaire sont manquantes.Work with dates and times for which time zone information is missing.

  • Utilisent seulement des dates et des heures UTC.Work with UTC dates and times only.

  • Récupérez des informations de date et d’heure à partir de sources en dehors de .NET, telles que des bases de données SQL.Retrieve date and time information from sources outside of .NET, such as SQL databases. En règle générale, ces sources stockent les informations de date et d'heure dans un format simple qui est compatible avec la structure DateTime .Typically, these sources store date and time information in a simple format that is compatible with the DateTime structure.

  • Effectuent des calculs de dates et d'heures, mais sont surtout concernées par des résultats d'ordre général.Perform date and time arithmetic, but are concerned with general results. Par exemple, dans une opération d'addition qui ajoute six mois à une date/heure, il n'est souvent pas important que le résultat soit ajusté pour l'heure d'été.For example, in an addition operation that adds six months to a particular date and time, it is often not important whether the result is adjusted for daylight saving time.

Sauf si une valeur DateTime particulière représente le temps UTC, cette valeur de date/heure est souvent ambiguë ou limitée en termes de portabilité.Unless a particular DateTime value represents UTC, that date and time value is often ambiguous or limited in its portability. Par exemple, si une valeur DateTime représente l'heure locale, elle est portable dans ce fuseau horaire local (c'est-à-dire que si la valeur est désérialisée sur un autre système dans le même fuseau horaire, cette valeur continue d'identifier de façon non ambiguë un point unique dans le temps).For example, if a DateTime value represents the local time, it is portable within that local time zone (that is, if the value is deserialized on another system in the same time zone, that value still unambiguously identifies a single point in time). En dehors du fuseau horaire local, cette valeur DateTime peut être interprétée de plusieurs façons.Outside the local time zone, that DateTime value can have multiple interpretations. Si la propriété Kind de la valeur est DateTimeKind.Unspecified, elle est encore moins portable : elle est maintenant ambiguë dans le même fuseau horaire, voire même sur le système où elle a été sérialisée pour la première fois.If the value's Kind property is DateTimeKind.Unspecified, it is even less portable: it is now ambiguous within the same time zone and possibly even on the same system on which it was first serialized. Seulement dans le cas où une valeur DateTime représente le temps UTC, celle-ci identifie de façon non ambiguë un point unique dans le temps, indépendamment du système ou du fuseau horaire où la valeur est utilisée.Only if a DateTime value represents UTC does that value unambiguously identify a single point in time regardless of the system or time zone in which the value is used.

Important

Lors de l'enregistrement ou du partage de données DateTime , le temps UTC doit être utilisé et la propriété DateTime de la valeur Kind doit être définie à DateTimeKind.Utc.When saving or sharing DateTime data, UTC should be used and the DateTime value's Kind property should be set to DateTimeKind.Utc.

La structure DateTimeOffsetThe DateTimeOffset structure

La structure DateTimeOffset représente une valeur de date et d'heure, ainsi qu'un décalage qui indique de combien cette valeur diffère du temps UTC.The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. Ainsi, la valeur toujours identifie toujours de façon non ambiguë un point unique dans le temps.Thus, the value always unambiguously identifies a single point in time.

Le type DateTimeOffset comprend toutes les fonctionnalités du type DateTime , ainsi que la gestion des fuseaux horaires.The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. Cela convient aux applications qui effectuent les opérations suivantes:This makes it suitable for applications that do the following:

  • Identifient de façon univoque et non ambiguë un point unique dans le temps.Uniquely and unambiguously identify a single point in time. Le type DateTimeOffset peut être utilisé pour définir de façon non ambiguë la signification de "maintenant", pour consigner les dates/heures des transactions, pour consigner les dates/heures des événements système ou des événements d'une application, et pour enregistrer les dates/heures de création et de modification des fichiers.The DateTimeOffset type can be used to unambiguously define the meaning of "now", to log transaction times, to log the times of system or application events, and to record file creation and modification times.

  • Effectuent des calculs de date et d'heure.Perform general date and time arithmetic.

  • Conservent plusieurs dates/heures ayant un lien entre elles, comme les dates/heures qui sont stockées sous la forme de deux valeurs distinctes ou de deux membres d'une structure.Preserve multiple related times, as long as those times are stored as two separate values or as two members of a structure.

Notes

Ces utilisations pour des valeurs DateTimeOffset sont beaucoup plus courantes que celles pour les valeurs DateTime .These uses for DateTimeOffset values are much more common than those for DateTime values. Par conséquent, DateTimeOffset doit être considéré comme le type de date et d'heure par défaut pour le développement d'applications.As a result, DateTimeOffset should be considered the default date and time type for application development.

Une valeur DateTimeOffset n'est pas liée à un fuseau horaire particulier, mais peut provenir de n'importe quel fuseau horaire.A DateTimeOffset value is not tied to a particular time zone, but can originate from any of a variety of time zones. Pour illustrer cela, l'exemple suivant répertorie les fuseaux horaires auxquels plusieurs valeurs DateTimeOffset (y compris une Heure du Pacifique locale) peuvent appartenir.To illustrate this, the following example lists the time zones to which a number of DateTimeOffset values (including a local Pacific Standard Time) can belong.

using System;
using System.Collections.ObjectModel;

public class TimeOffsets
{
   public static void Main()
   {
      DateTime thisDate = new DateTime(2007, 3, 10, 0, 0, 0);
      DateTime dstDate = new DateTime(2007, 6, 10, 0, 0, 0);
      DateTimeOffset thisTime;
      
      thisTime = new DateTimeOffset(dstDate, new TimeSpan(-7, 0, 0));
      ShowPossibleTimeZones(thisTime);

      thisTime = new DateTimeOffset(thisDate, new TimeSpan(-6, 0, 0));  
      ShowPossibleTimeZones(thisTime);

      thisTime = new DateTimeOffset(thisDate, new TimeSpan(+1, 0, 0));
      ShowPossibleTimeZones(thisTime);
   }

   private static void ShowPossibleTimeZones(DateTimeOffset offsetTime)
   {
      TimeSpan offset = offsetTime.Offset;
      ReadOnlyCollection<TimeZoneInfo> timeZones;
            
      Console.WriteLine("{0} could belong to the following time zones:", 
                        offsetTime.ToString());
      // Get all time zones defined on local system
      timeZones = TimeZoneInfo.GetSystemTimeZones();     
      // Iterate time zones 
      foreach (TimeZoneInfo timeZone in timeZones)
      {
         // Compare offset with offset for that date in that time zone
         if (timeZone.GetUtcOffset(offsetTime.DateTime).Equals(offset))
            Console.WriteLine("   {0}", timeZone.DisplayName);
      }
      Console.WriteLine();
   } 
}
// This example displays the following output to the console:
//       6/10/2007 12:00:00 AM -07:00 could belong to the following time zones:
//          (GMT-07:00) Arizona
//          (GMT-08:00) Pacific Time (US & Canada)
//          (GMT-08:00) Tijuana, Baja California
//       
//       3/10/2007 12:00:00 AM -06:00 could belong to the following time zones:
//          (GMT-06:00) Central America
//          (GMT-06:00) Central Time (US & Canada)
//          (GMT-06:00) Guadalajara, Mexico City, Monterrey - New
//          (GMT-06:00) Guadalajara, Mexico City, Monterrey - Old
//          (GMT-06:00) Saskatchewan
//       
//       3/10/2007 12:00:00 AM +01:00 could belong to the following time zones:
//          (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
//          (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
//          (GMT+01:00) Brussels, Copenhagen, Madrid, Paris
//          (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb
//          (GMT+01:00) West Central Africa
Imports System.Collections.ObjectModel

Module TimeOffsets
   Public Sub Main()
      Dim thisTime As DateTimeOffset 
      
      thisTime = New DateTimeOffset(#06/10/2007#, New TimeSpan(-7, 0, 0))
      ShowPossibleTimeZones(thisTime) 

      thisTime = New DateTimeOffset(#03/10/2007#, New TimeSpan(-6, 0, 0))  
      ShowPossibleTimeZones(thisTime)

      thisTime = New DateTimeOffset(#03/10/2007#, New TimeSpan(+1, 0, 0))
      ShowPossibleTimeZones(thisTime)
   End Sub
   
   Private Sub ShowPossibleTimeZones(offsetTime As DateTimeOffset)
      Dim offset As TimeSpan = offsetTime.Offset
      Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo)
            
      Console.WriteLine("{0} could belong to the following time zones:", _
                        offsetTime.ToString())
      ' Get all time zones defined on local system
      timeZones = TimeZoneInfo.GetSystemTimeZones()     
      ' Iterate time zones
      For Each timeZone As TimeZoneInfo In timeZones
         ' Compare offset with offset for that date in that time zone
         If timeZone.GetUtcOffset(offsetTime.DateTime).Equals(offset) Then
            Console.WriteLine("   {0}", timeZone.DisplayName)
         End If   
      Next
      Console.WriteLine()
   End Sub
End Module
' This example displays the following output to the console:
'       6/10/2007 12:00:00 AM -07:00 could belong to the following time zones:
'          (GMT-07:00) Arizona
'          (GMT-08:00) Pacific Time (US & Canada)
'          (GMT-08:00) Tijuana, Baja California
'       
'       3/10/2007 12:00:00 AM -06:00 could belong to the following time zones:
'          (GMT-06:00) Central America
'          (GMT-06:00) Central Time (US & Canada)
'          (GMT-06:00) Guadalajara, Mexico City, Monterrey - New
'          (GMT-06:00) Guadalajara, Mexico City, Monterrey - Old
'          (GMT-06:00) Saskatchewan
'       
'       3/10/2007 12:00:00 AM +01:00 could belong to the following time zones:
'          (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
'          (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
'          (GMT+01:00) Brussels, Copenhagen, Madrid, Paris
'          (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb
'          (GMT+01:00) West Central Africa

La sortie montre que chaque valeur de date et d'heure de cet exemple peut appartenir à au moins trois fuseaux horaires différents.The output shows that each date and time value in this example can belong to at least three different time zones. La valeur DateTimeOffset de 6/10/2007 indique que si une valeur de date/heure représente une heure d'été, son décalage avec le temps UTC ne correspond pas nécessairement au décalage UTC de base du fuseau horaire d'origine ou au décalage avec le temps UTC indiqué par son nom d'affichage.The DateTimeOffset value of 6/10/2007 shows that if a date and time value represents a daylight saving time, its offset from UTC does not even necessarily correspond to the originating time zone's base UTC offset or to the offset from UTC found in its display name. Cela signifie que, comme une valeur DateTimeOffset n'est pas fortement couplée avec son fuseau horaire, elle ne peut pas refléter la transition d'un fuseau horaire vers et depuis l'heure d'été.This means that, because a single DateTimeOffset value is not tightly coupled with its time zone, it cannot reflect a time zone's transition to and from daylight saving time. Ceci peut être particulièrement problématique quand des calculs de date et d'heure sont utilisés pour manipuler une valeur DateTimeOffset .This can be particularly problematic when date and time arithmetic is used to manipulate a DateTimeOffset value. (Pour une présentation de la façon d’effectuer des calculs de date et d’heure en prenant en compte les règles d’ajustement d’un fuseau horaire, consultez Performing arithmetic operations with dates and times.)(For a discussion of how to perform date and time arithmetic in a way that takes account of a time zone's adjustment rules, see Performing arithmetic operations with dates and times.)

La structure TimeSpanThe TimeSpan structure

La structure TimeSpan représente un intervalle de temps.The TimeSpan structure represents a time interval. Ses deux utilisations courantes sont :Its two typical uses are:

  • Refléter un intervalle de temps entre deux valeurs de date/heure.Reflecting the time interval between two date and time values. Par exemple, la soustraction d'une valeur DateTime d'une autre retourne une valeur TimeSpan .For example, subtracting one DateTime value from another returns a TimeSpan value.

  • Mesurer un temps écoulé.Measuring elapsed time. Par exemple, la Stopwatch.Elapsed propriété retourne une TimeSpan valeur qui reflète l’intervalle de temps qui s’est écoulé depuis l' Stopwatch appel à l’une des méthodes qui commence à mesurer le temps écoulé.For example, the Stopwatch.Elapsed property returns a TimeSpan value that reflects the time interval that has elapsed since the call to one of the Stopwatch methods that begins to measure elapsed time.

Une TimeSpan valeur peut également être utilisée en remplacement d’une DateTime valeur quand cette valeur reflète une heure sans référence à un jour particulier.A TimeSpan value can also be used as a replacement for a DateTime value when that value reflects a time without reference to a particular day. Cette utilisation est similaire aux DateTime.TimeOfDay propriétés et DateTimeOffset.TimeOfDay , qui retournent une TimeSpan valeur qui représente l’heure sans référence à une date.This usage is similar to the DateTime.TimeOfDay and DateTimeOffset.TimeOfDay properties, which return a TimeSpan value that represents the time without reference to a date. Par exemple, la structure TimeSpan peut être utilisée pour refléter les heures d'ouverture ou de fermeture quotidiennes d'un magasin, ou elle peut être utilisée pour représenter l'heure où se produit un événement régulier.For example, the TimeSpan structure can be used to reflect a store's daily opening or closing time, or it can be used to represent the time at which any regular event occurs.

L'exemple suivant définit une structure StoreInfo qui inclut des objets TimeSpan pour les heures d'ouverture et de fermeture d'un magasin, ainsi qu'un objet TimeZoneInfo qui représente le fuseau horaire du magasin.The following example defines a StoreInfo structure that includes TimeSpan objects for store opening and closing times, as well as a TimeZoneInfo object that represents the store's time zone. La structure comprend également deux méthodes, IsOpenNow et IsOpenAt, qui indiquent si le magasin est ouvert à une heure spécifiée par l'utilisateur, qui est supposé être dans le fuseau horaire local.The structure also includes two methods, IsOpenNow and IsOpenAt, that indicates whether the store is open at a time specified by the user, who is assumed to be in the local time zone.

using System;

public struct StoreInfo
{
   public String store;
   public TimeZoneInfo tz;
   public TimeSpan open;
   public TimeSpan close;

   public bool IsOpenNow()
   {
      return IsOpenAt(DateTime.Now.TimeOfDay);
   }
   
   public bool IsOpenAt(TimeSpan time)
   {
      TimeZoneInfo local = TimeZoneInfo.Local;
      TimeSpan offset = TimeZoneInfo.Local.BaseUtcOffset;

      // Is the store in the same time zone?
      if (tz.Equals(local)) {
         return time >= open & time <= close;
      }
      else {
         TimeSpan delta = TimeSpan.Zero;
         TimeSpan storeDelta = TimeSpan.Zero;
         
         // Is it daylight saving time in either time zone?
         if (local.IsDaylightSavingTime(DateTime.Now.Date + time))
            delta = local.GetAdjustmentRules()[local.GetAdjustmentRules().Length - 1].DaylightDelta;

         if (tz.IsDaylightSavingTime(TimeZoneInfo.ConvertTime(DateTime.Now.Date + time, local, tz)))
            storeDelta = tz.GetAdjustmentRules()[local.GetAdjustmentRules().Length - 1].DaylightDelta;

         TimeSpan comparisonTime = time + (offset - tz.BaseUtcOffset).Negate() + (delta - storeDelta).Negate();
         return comparisonTime >= open & comparisonTime <= close;
      }
   }
}
Public Structure StoreInfo
   Dim store As String
   Dim tz As TimeZoneInfo
   Dim open As TimeSpan
   Dim close As TimeSpan

   Public Function IsOpenNow() As Boolean
      Return IsOpenAt(Date.Now.TimeOfDay)
   End Function
   
   Public Function IsOpenAt(time As TimeSpan) As Boolean
      Dim local As TimeZoneInfo = TimeZoneInfo.Local
      Dim offset As TimeSpan = TimeZoneInfo.Local.BaseUtcOffset

      ' Is the store in the same time zone?
      If tz.Equals(local) Then
         Return time >= open And time <= close
      Else
         Dim delta As TimeSpan = TimeSpan.Zero
         Dim storeDelta As TimeSpan = TimeSpan.Zero
         
         ' Is it daylight saving time in either time zone?
         If local.IsDaylightSavingTime(Date.Now.Date + time) Then
            delta = local.GetAdjustmentRules(local.GetAdjustmentRules().Length - 1).DaylightDelta
         End If
         If tz.IsDaylightSavingTime(TimeZoneInfo.ConvertTime(Date.Now.Date + time, local, tz))
            storeDelta = tz.GetAdjustmentRules(local.GetAdjustmentRules().Length - 1).DaylightDelta
         End If
         Dim comparisonTime As TimeSpan = time + (offset - tz.BaseUtcOffset).Negate() + (delta - storeDelta).Negate
         Return (comparisonTime >= open And comparisonTime <= close)
      End If
   End Function
End Structure

La structure StoreInfo peut ensuite être utilisée par le code du client comme ce qui suit.The StoreInfo structure can then be used by client code like the following.

public class Example
{
   public static void Main()
   {
      // Instantiate a StoreInfo object.
      var store103 = new StoreInfo();
      store103.store = "Store #103";
      store103.tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
      // Store opens at 8:00.
      store103.open = new TimeSpan(8, 0, 0);
      // Store closes at 9:30.
      store103.close = new TimeSpan(21, 30, 0);
      
      Console.WriteLine("Store is open now at {0}: {1}",
                        DateTime.Now.TimeOfDay, store103.IsOpenNow());
      TimeSpan[] times = { new TimeSpan(8, 0, 0), new TimeSpan(21, 0, 0),
                           new TimeSpan(4, 59, 0), new TimeSpan(18, 31, 0) };
      foreach (var time in times)
         Console.WriteLine("Store is open at {0}: {1}",
                           time, store103.IsOpenAt(time));
   }
}
// The example displays the following output:
//       Store is open now at 15:29:01.6129911: True
//       Store is open at 08:00:00: True
//       Store is open at 21:00:00: False
//       Store is open at 04:59:00: False
//       Store is open at 18:31:00: False
Module Example
   Public Sub Main()
      ' Instantiate a StoreInfo object.
      Dim store103 As New StoreInfo()
      store103.store = "Store #103"
      store103.tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
      ' Store opens at 8:00.
      store103.open = new TimeSpan(8, 0, 0)
      ' Store closes at 9:30.
      store103.close = new TimeSpan(21, 30, 0)
      
      Console.WriteLine("Store is open now at {0}: {1}",
                        Date.Now.TimeOfDay, store103.IsOpenNow())
      Dim times() As TimeSpan = { New TimeSpan(8, 0, 0),
                                  New TimeSpan(21, 0, 0),
                                  New TimeSpan(4, 59, 0),
                                  New TimeSpan(18, 31, 0) }
      For Each time In times
         Console.WriteLine("Store is open at {0}: {1}",
                           time, store103.IsOpenAt(time))
      Next
   End Sub
End Module
' The example displays the following output:
'       Store is open now at 15:29:01.6129911: True
'       Store is open at 08:00:00: True
'       Store is open at 21:00:00: False
'       Store is open at 04:59:00: False
'       Store is open at 18:31:00: False

La classe TimeZoneInfoThe TimeZoneInfo class

La classe TimeZoneInfo représente les fuseaux horaires de la terre et permet la conversion de toute date/heure dans un fuseau horaire en son équivalent dans un autre fuseau horaire.The TimeZoneInfo class represents any of the Earth's time zones, and enables the conversion of any date and time in one time zone to its equivalent in another time zone. La classe TimeZoneInfo permet de travailler avec des dates et des heures de façon à ce qu'une valeur de date/heure identifie d'une manière non ambiguë un point unique dans le temps.The TimeZoneInfo class makes it possible to work with dates and times so that any date and time value unambiguously identifies a single point in time. La classe TimeZoneInfo est également extensible.The TimeZoneInfo class is also extensible. Bien que dépendante des informations de fuseau horaire fournies pour les systèmes Windows et définies dans le Registre, elle prend en charge la création de fuseaux horaires personnalisés.Although it depends on time zone information provided for Windows systems and defined in the registry, it supports the creation of custom time zones. Elle prend également en charge la sérialisation et la désérialisation des informations de fuseau horaire.It also supports the serialization and deserialization of time zone information.

Dans certains cas, tirer parti de la classe TimeZoneInfo peut nécessiter du travail de développement supplémentaire.In some cases, taking full advantage of the TimeZoneInfo class may require further development work. Si les valeurs de date et d’heure ne sont pas étroitement couplées avec les fuseaux horaires auxquels elles appartiennent, un travail supplémentaire est nécessaire.If date and time values are not tightly coupled with the time zones to which they belong, further work is required. À moins que votre application ne fournisse un mécanisme de liaison d’une date et d’une heure avec son fuseau horaire associé, il est facile pour une valeur de date et d’heure particulière de se dissocier de son fuseau horaire.Unless your application provides some mechanism for linking a date and time with its associated time zone, it's easy for a particular date and time value to become disassociated from its time zone. Une méthode pour lier ces informations consiste à définir une classe ou une structure qui contient à la fois la date/heure et son objet de fuseau horaire associé.One method of linking this information is to define a class or structure that contains both the date and time value and its associated time zone object.

Tirer parti de la prise en charge des fuseaux horaires dans .NET est possible seulement si le fuseau horaire auquel appartient une valeur de date/heure est connu quand cet objet de date/heure est instancié.Taking advantage of time zone support in .NET is possible only if the time zone to which a date and time value belongs is known when that date and time object is instantiated. Ce n'est pas souvent le cas, en particulier dans les applications web ou réseau.This is often not the case, particularly in Web or network applications.

Voir aussiSee also