Elección entre DateTime, DateTimeOffset, TimeSpan y TimeZoneInfoChoose between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo

Las aplicaciones .NET pueden usar la información de fecha y hora de varias maneras..NET applications can use date and time information in several ways. Los usos más comunes de la información de fecha y hora son:The more common uses of date and time information include:

  • Reflejar solo la fecha (la información de hora no es importante).To reflect a date only, so that time information is not important.

  • Reflejar solo la hora (la información de fecha no es importante).To reflect a time only, so that date information is not important.

  • Reflejar una fecha y una hora abstractas que no estén asociadas a una hora ni a un lugar concretos (por ejemplo, la mayoría de tiendas de una cadena internacional abren los días laborables a las 09:00).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.).

  • Recuperar información de fecha y hora de orígenes externos a .NET, normalmente donde la información de fecha y hora se almacena en un tipo de datos 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.

  • Identificar de forma exclusiva e inequívoca un solo punto en el tiempo.To uniquely and unambiguously identify a single point in time. Algunas aplicaciones requieren que la fecha y la hora solo sean inequívocas en el sistema host.Some applications require that a date and time be unambiguous only on the host system. Otras aplicaciones requieren que sean inequívocas en todos los sistemas (es decir, que una fecha serializada en un sistema se pueda deserializar y usar con sentido en otro sistema en cualquier lugar del mundo).Other apps 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).

  • Conservar varias horas relacionadas (como la hora local del solicitante y la hora de recepción del servidor con respecto a una solicitud web).To preserve multiple related times (such as the requestor's local time and the server's time of receipt for a Web request).

  • Realizar operaciones aritméticas de fecha y hora, posiblemente con un resultado que identifica de forma exclusiva e inequívoca un único punto en el tiempo.To perform date and time arithmetic, possibly with a result that uniquely and unambiguously identifies a single point in time.

.Net incluye los DateTime DateTimeOffset tipos,, TimeSpan y TimeZoneInfo , que se pueden usar para compilar aplicaciones que funcionen con fechas y horas..NET includes the DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo types, all of which can be used to build applications that work with dates and times.

Nota

En este tema no TimeZone se explica porque su funcionalidad está incorporada casi por completo en la TimeZoneInfo clase.This topic doesn't discuss TimeZone because its functionality is almost entirely incorporated in the TimeZoneInfo class. Siempre que sea posible, utilice la TimeZoneInfo clase en lugar de la TimeZone clase.Whenever possible, use the TimeZoneInfo class instead of the TimeZone class.

DateTime (estructura)The DateTime structure

Un valor DateTime define una fecha y hora concretas.A DateTime value defines a particular date and time. Incluye una Kind propiedad que proporciona información limitada sobre la zona horaria a la que pertenece esa fecha y hora.It includes a Kind property that provides limited information about the time zone to which that date and time belongs. El valor DateTimeKind devuelto por la propiedad Kind indica si el valor DateTime representa la hora local (DateTimeKind.Local), la hora universal coordinada (UTC) (DateTimeKind.Utc) o una hora no especificada (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 DateTime estructura es adecuada para las aplicaciones con una o varias de las siguientes características:The DateTime structure is suitable for applications with one or more of the following characteristics:

  • Trabajar solo con fechas.Work with dates only.

  • Trabajar solo con horas.Work with times only.

  • Trabajar con fechas y horas abstractas.Work with abstract dates and times.

  • Trabajar con fechas y horas cuya información de zona horaria no esté disponible.Work with dates and times for which time zone information is missing.

  • Trabajar solo con fechas y horas UTC.Work with UTC dates and times only.

  • Recuperar información de fecha y hora de orígenes externos a .NET, como las bases de datos SQL.Retrieve date and time information from sources outside of .NET, such as SQL databases. Normalmente, estos orígenes almacenan la información de fecha y hora en un formato sencillo que es compatible con la estructura DateTime .Typically, these sources store date and time information in a simple format that is compatible with the DateTime structure.

  • Realizar operaciones aritméticas de fecha y hora, pero con interés por los resultados generales.Perform date and time arithmetic, but are concerned with general results. Por ejemplo, en una operación que suma seis meses a una determinada fecha y hora, a menudo no resulta importante si el resultado se ajusta al horario de verano.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.

A menos que un determinado valor DateTime represente la hora UTC, ese valor de fecha y hora suele ser ambiguo o limitado en su movilidad.Unless a particular DateTime value represents UTC, that date and time value is often ambiguous or limited in its portability. Por ejemplo, si un valor DateTime representa la hora local, entonces se puede mover en la zona horaria local (es decir, si el valor se deserializa en otro sistema de la misma zona horaria, dicho valor sigue identificando inequívocamente un único punto en el tiempo).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). Fuera de la zona horaria local, ese valor DateTime puede tener varias interpretaciones.Outside the local time zone, that DateTime value can have multiple interpretations. Si la propiedad Kind del valor es DateTimeKind.Unspecified, es aún menos móvil: ahora es ambiguo dentro de la misma zona horaria y posiblemente incluso en el mismo sistema en el que se serializó por primera vez.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. Solo si un valor DateTime representa la hora UTC, ese valor identificará inequívocamente un único punto con independencia del sistema o la zona horaria en los que se usa el valor.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.

Importante

Al guardar o compartir datos de DateTime , debe usarse la hora UTC, y la propiedad DateTime del valor Kind debe establecerse en 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.

DateTimeOffset (estructura)The DateTimeOffset structure

La estructura DateTimeOffset representa un valor de fecha y hora, junto con un desplazamiento que indica la diferencia de ese valor con respecto a la hora UTC.The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. Por lo tanto, el valor identifica siempre de forma inequívoca un único punto en el tiempo.Thus, the value always unambiguously identifies a single point in time.

El tipo DateTimeOffset incluye toda la funcionalidad del tipo DateTime junto con la zona horaria.The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. Esto lo hace adecuado para las aplicaciones que:This makes it suitable for applications that:

  • Identificar de forma exclusiva e inequívoca un solo punto en el tiempo.Uniquely and unambiguously identify a single point in time. El tipo DateTimeOffset puede usarse para definir inequívocamente el significado de “ahora”, para registrar los tiempos de transacción, para registrar la hora de eventos del sistema o de aplicaciones, y para registrar los tiempos de creación y modificación de archivos.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.

  • Realizar operaciones aritméticas generales de fecha y hora.Perform general date and time arithmetic.

  • Conservar varias horas relacionadas, siempre que esas horas se almacenen como dos valores independientes o como dos miembros de una estructura.Preserve multiple related times, as long as those times are stored as two separate values or as two members of a structure.

Nota

Estos usos de valores DateTimeOffset son mucho más comunes que los de valores DateTime .These uses for DateTimeOffset values are much more common than those for DateTime values. Como resultado, considere DateTimeOffset como el tipo de fecha y hora predeterminado para el desarrollo de aplicaciones.As a result, consider DateTimeOffset as the default date and time type for application development.

Un DateTimeOffset valor no está asociado a una zona horaria determinada, pero puede originarse en distintas zonas horarias.A DateTimeOffset value isn't tied to a particular time zone, but can originate from a variety of time zones. En el ejemplo siguiente se enumeran las zonas horarias a las que DateTimeOffset pueden pertenecer varios valores (incluida una hora estándar local del Pacífico).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 salida muestra que cada valor de fecha y hora de este ejemplo puede pertenecer al menos a tres zonas horarias diferentes.The output shows that each date and time value in this example can belong to at least three different time zones. El DateTimeOffset valor de 6/10/2007 muestra que si un valor de fecha y hora representa un horario de verano, su desplazamiento con respecto a la hora UTC no se corresponde necesariamente con el desplazamiento de UTC base de la zona horaria de origen o con el desplazamiento de la hora UTC que se encuentra en su nombre para mostrar.The DateTimeOffset value of 6/10/2007 shows that if a date and time value represents a daylight saving time, its offset from UTC doesn't even necessarily correspond to the originating time zone's base UTC offset or to the offset from UTC found in its display name. Dado que un solo DateTimeOffset valor no está acoplado estrechamente con su zona horaria, no puede reflejar la transición de una zona horaria hacia y desde el horario de verano.Because a single DateTimeOffset value isn't tightly coupled with its time zone, it can't reflect a time zone's transition to and from daylight saving time. Esto puede ser problemático cuando se usan operaciones aritméticas de fecha y hora para manipular un DateTimeOffset valor.This can be problematic when date and time arithmetic is used to manipulate a DateTimeOffset value. Para obtener información sobre cómo realizar operaciones aritméticas de fecha y hora de una forma que tenga en cuenta las reglas de ajuste de una zona horaria, vea realizar operaciones aritméticas con fechas y horas.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.

TimeSpan (estructura)The TimeSpan structure

La estructura TimeSpan representa un intervalo de tiempo.The TimeSpan structure represents a time interval. Sus dos usos típicos son:Its two typical uses are:

  • Reflejar el intervalo de tiempo entre dos valores de fecha y hora.Reflecting the time interval between two date and time values. Por ejemplo, restar un valor DateTime de otro devuelve un valor TimeSpan .For example, subtracting one DateTime value from another returns a TimeSpan value.

  • Medir el tiempo transcurrido.Measuring elapsed time. Por ejemplo, la Stopwatch.Elapsed propiedad devuelve un TimeSpan valor que refleja el intervalo de tiempo que ha transcurrido desde la llamada a uno de los Stopwatch métodos que empieza a medir el tiempo transcurrido.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.

TimeSpanTambién se puede utilizar un valor como sustituto de un DateTime valor cuando ese valor refleja una hora sin referencia a un día determinado.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. Este uso es similar a las DateTime.TimeOfDay DateTimeOffset.TimeOfDay propiedades y, que devuelven un TimeSpan valor que representa el tiempo sin referencia a una fecha.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. Por ejemplo, la estructura TimeSpan puede usarse para reflejar la hora diaria de apertura o cierre de una tienda, o puede usarse para representar la hora en que se produce cualquier evento habitual.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.

En el ejemplo siguiente se define una estructura StoreInfo que incluye objetos TimeSpan para las horas de apertura y cierre de la tienda, así como un objeto TimeZoneInfo que representa la zona horaria de la tienda.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 estructura también incluye dos métodos, IsOpenNow e IsOpenAt, que indican si la tienda está abierta en el momento especificado por el usuario, quien se supone que está en la zona horaria 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()[tz.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 AndAlso 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(tz.GetAdjustmentRules().Length - 1).DaylightDelta
            End If
            Dim comparisonTime As TimeSpan = time + (offset - tz.BaseUtcOffset).Negate() + (delta - storeDelta).Negate
            Return (comparisonTime >= open AndAlso comparisonTime <= close)
        End If
    End Function
End Structure

La estructura StoreInfo puede usarla un código de cliente como este.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

TimeZoneInfo (clase)The TimeZoneInfo class

La clase 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.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 clase TimeZoneInfo permite trabajar con valores de fecha y hora de forma que cada uno de esos valores identifique de forma inequívoca un único punto en el tiempo.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 clase TimeZoneInfo también es extensible.The TimeZoneInfo class is also extensible. Aunque depende de la información de zona horaria proporcionada para los sistemas Windows y definida en el Registro, admite la creación de zonas horarias personalizadas.Although it depends on time zone information provided for Windows systems and defined in the registry, it supports the creation of custom time zones. También admite la serialización y deserialización de la información de zona horaria.It also supports the serialization and deserialization of time zone information.

En algunos casos, si desea aprovechar al máximo la clase TimeZoneInfo puede que tenga que desarrollar aún más.In some cases, taking full advantage of the TimeZoneInfo class may require further development work. Si los valores de fecha y hora no están estrechamente acoplados a las zonas horarias a las que pertenecen, se requiere trabajo adicional.If date and time values are not tightly coupled with the time zones to which they belong, further work is required. A menos que la aplicación proporcione algún mecanismo para vincular una fecha y hora con su zona horaria asociada, es fácil que un determinado valor de fecha y hora se desasocie de su zona horaria.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. Un método para vincular esta información es definir una clase o estructura que contenga el valor de fecha y hora, y su objeto de zona horaria asociada.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.

Para aprovechar la compatibilidad de zona horaria en .NET, debe conocer la zona horaria a la que pertenece un valor de fecha y hora cuando se crea una instancia de ese objeto de fecha y hora.To take advantage of time zone support in .NET, you must know the time zone to which a date and time value belongs when that date and time object is instantiated. A menudo, no se conoce la zona horaria, especialmente en aplicaciones web o de red.The time zone is often not known, particularly in web or network apps.

Vea tambiénSee also