Información general sobre zonas horariasTime zone overview

La clase TimeZoneInfo simplifica la creación de aplicaciones que tengan en cuenta la zona horaria.The TimeZoneInfo class simplifies the creation of time zone-aware applications. La clase TimeZone permite trabajar con la zona horaria local y la hora universal coordinada (UTC).The TimeZone class supports working with the local time zone and Coordinated Universal Time (UTC). La clase TimeZoneInfo admite ambas zonas y cualquier zona horaria sobre la que la información está predefinida en el registro.The TimeZoneInfo class supports both of these zones as well as any time zone about which information is predefined in the registry. También puede utilizar TimeZoneInfo para definir zonas horarias personalizadas en las que el sistema no tiene información.You can also use TimeZoneInfo to define custom time zones that the system has no information about.

Aspectos básicos de la zona horariaTime zone essentials

Una zona horaria es una región geográfica en la que se usa la misma hora.A time zone is a geographical region in which the same time is used. Normalmente, pero no siempre, las zonas horarias adyacentes tienen una hora de diferencia.Typically, but not always, adjacent time zones are one hour apart. La hora de cualquier zona horaria del mundo se puede expresar como un desplazamiento a partir de la hora universal coordinada (UTC).The time in any of the world's time zones can be expressed as an offset from Coordinated Universal Time (UTC).

Muchas zonas horarias del mundo admiten el horario de verano.Many of the world's time zones support daylight saving time. El horario de verano intenta maximizar las horas de luz diarias al adelantar la hora una hora en primavera o a principios de verano y regresar a la hora normal (o estándar) a finales de verano o en otoño.Daylight saving time tries to maximize daylight hours by advancing the time forward by one hour in the spring or early summer, and returning to the normal (or standard) time in the late summer or fall. Estos cambios en relación con el horario estándar se conocen como reglas de ajuste.These changes to and from standard time are known as adjustment rules.

El cambio al horario de verano o desde este en una zona horaria determinada puede definirse con una regla de ajuste fija o con una regla de ajuste flotante.The transition to and from daylight saving time in a particular time zone can be defined either by a fixed or a floating adjustment rule. Una regla de ajuste fija establece una fecha concreta en la que se produce la transición hacia o desde el horario de verano cada año.A fixed adjustment rule sets a particular date on which the transition to or from daylight saving time occurs each year. Por ejemplo, una transición desde el horario de verano hacia el horario estándar que se produce cada año el 25 de octubre sigue una regla de ajuste fija.For example, a transition from daylight saving time to standard time that occurs each year on October 25 follows a fixed adjustment rule. Mucho más comunes son las reglas de ajuste flotantes, que establecen un día concreto de una semana concreta de un mes determinado para la transición hacia o desde el horario de verano.Much more common are floating adjustment rules, which set a particular day of a particular week of a particular month for the transition to or from daylight saving time. Por ejemplo, una transición desde el horario estándar hacia el horario de verano que se produce el tercer domingo de marzo sigue una regla de ajuste flotante.For example, a transition from standard time to daylight saving time that occurs on the third Sunday of March follows a floating adjustment rule.

Para las zonas horarias que admiten reglas de ajuste, el cambio de horario de verano crea dos tipos de horas anómalas: horas no válidas y horas ambiguas.For time zones that support adjustment rules, the transition to and from daylight saving time creates two kinds of anomalous times: invalid times and ambiguous times. Una hora no válida es una hora no existente creada por la transición desde el horario estándar hacia el horario de verano.An invalid time is a nonexistent time created by the transition from standard time to daylight saving time. Por ejemplo, si se produce esta transición en un día determinado a las 2:00 A.M.For example, if this transition occurs on a particular day at 2:00 A.M. y hace que la hora cambie a las 3:00 A.M., cualquier intervalo de tiempo entre las 2:00 A.M.and causes the time to change to 3:00 A.M., each time interval between 2:00 A.M. y las 2:59:99 A.M.and 2:59:99 A.M. es no válido.is invalid. Una hora ambigua es aquella que se puede asignar a dos horas diferentes en una sola zona horaria.An ambiguous time is a time that can be mapped to two different times in a single time zone. Se crea durante la transición del horario de verano hacia el horario estándar.It is created by the transition from daylight saving time to standard time. Por ejemplo, si se produce esta transición en un día determinado a las 2:00 A.M.For example, if this transition occurs on a particular day at 2:00 A.M. y hace que la hora cambie a la 1:00 A.M., cualquier intervalo de tiempo entre la 1:00 A.M.and causes the time to change to 1:00 A.M., each time interval between 1:00 A.M. y la 1:59:99 A.M.and 1:59:99 A.M. se puede interpretar como correspondiente a la hora estándar o correspondiente al horario de verano.can be interpreted as either a standard time or a daylight saving time.

Terminología de zona horariaTime zone terminology

En la tabla siguiente se definen los términos usados comúnmente al trabajar con zonas horarias y desarrollar aplicaciones basadas en la zona horaria.The following table defines terms commonly used when working with time zones and developing time zone-aware applications.

TérminoTerm de esquema JSONDefinition
Regla de ajusteAdjustment rule Una regla que define cuándo se produce la transición desde el horario estándar hacia el horario de verano y desde el horario de verano hacia el horario estándar.A rule that defines when the transition from standard time to daylight saving time and back from daylight saving time to standard time occurs. Cada regla de ajuste tiene una fecha de inicio y de finalización que define cuándo se ha implementado la regla (por ejemplo, la regla de ajuste está establecida entre el 1 de enero de 1986 y el 31 de diciembre de 2006), una diferencia (la cantidad de tiempo que la hora estándar cambia como consecuencia de la aplicación de TH e información de ajuste) e información sobre la fecha y hora específicas que las transiciones deben producir durante el período de ajuste.Each adjustment rule has a start and end date that defines when the rule is in place (for example, the adjustment rule is in place from January 1, 1986, to December 31, 2006), a delta (the amount of time by which the standard time changes as a result of the application of the adjustment rule), and information about the specific date and time that the transitions are to occur during the adjustment period. Las transiciones pueden seguir una regla fija o una regla flotante.Transitions can follow either a fixed rule or a floating rule.
Hora ambiguaAmbiguous time Una hora que se puede asignar a dos horas diferentes en una sola zona horaria.A time that can be mapped to two different times in a single time zone. Esto sucede cuando la hora del reloj se atrasa, como durante la transición del horario de verano de una zona horaria al horario estándar.It occurs when the clock time is adjusted back in time, such as during the transition from a time zone's daylight saving time to its standard time. Por ejemplo, si se produce esta transición en un día determinado a las 2:00 A.M.For example, if this transition occurs on a particular day at 2:00 A.M. y hace que la hora cambie a la 1:00 A.M., cualquier intervalo de tiempo entre la 1:00 A.M.and causes the time to change to 1:00 A.M., each time interval between 1:00 A.M. y la 1:59:99 A.M.and 1:59:99 A.M. se puede interpretar como correspondiente a la hora estándar o correspondiente al horario de verano.can be interpreted as either a standard time or a daylight saving time.
Regla fijaFixed rule Regla de ajuste que establece una fecha concreta para la transición hacia o desde el horario de verano.An adjustment rule that sets a particular date for the transition to or from daylight saving time. Por ejemplo, una transición desde el horario de verano hacia el horario estándar que se produce cada año el 25 de octubre sigue una regla de ajuste fija.For example, a transition from daylight saving time to standard time that occurs each year on October 25 follows a fixed adjustment rule.
Regla flotanteFloating rule Regla de ajuste que establece un día concreto de una semana concreta de un mes determinado para la transición hacia o desde el horario de verano.An adjustment rule that sets a particular day of a particular week of a particular month for the transition to or from daylight saving time. Por ejemplo, una transición desde el horario estándar hacia el horario de verano que se produce el tercer domingo de marzo sigue una regla de ajuste flotante.For example, a transition from standard time to daylight saving time that occurs on the third Sunday of March follows a floating adjustment rule.
Hora no válidaInvalid time Hora no existente que resulta de la transición desde el horario estándar hacia el horario de verano.A nonexistent time that is an artifact of the transition from standard time to daylight saving time. Esto sucede cuando la hora del reloj se adelanta, como durante la transición en una zona horaria desde el horario estándar hacia el horario de verano.It occurs when the clock time is adjusted forward in time, such as during the transition from a time zone's standard time to its daylight saving time. Por ejemplo, si se produce esta transición en un día determinado a las 2:00 A.M.For example, if this transition occurs on a particular day at 2:00 A.M. y hace que la hora cambie a las 3:00 A.M., cualquier intervalo de tiempo entre las 2:00 A.M.and causes the time to change to 3:00 A.M., each time interval between 2:00 A.M. y las 2:59:99 A.M.and 2:59:99 A.M. es no válido.is invalid.
Tiempo de transiciónTransition time Información sobre un cambio horario concreto, como el cambio desde el horario de verano hacia el horario estándar o viceversa, en una zona horaria determinada.Information about a specific time change, such as the change from daylight saving time to standard time or vice versa, in a particular time zone.

Zonas horarias y la clase TimeZoneInfoTime zones and the TimeZoneInfo class

En .NET, un objeto TimeZoneInfo representa una zona horaria.In .NET, a TimeZoneInfo object represents a time zone. La clase TimeZoneInfo incluye un método GetAdjustmentRules que devuelve una matriz de objetos TimeZoneInfo.AdjustmentRule.The TimeZoneInfo class includes a GetAdjustmentRules method that returns an array of TimeZoneInfo.AdjustmentRule objects. Cada elemento de esta matriz proporciona información sobre la transición hacia y desde el horario de verano durante un período de tiempo determinado.Each element of this array provides information about the transition to and from daylight saving time for a particular time period. (En el caso de las zonas horarias que no admiten el horario de verano, el método devuelve una matriz vacía). Cada TimeZoneInfo.AdjustmentRule objeto tiene una DaylightTransitionStart y una propiedad DaylightTransitionEnd que define la fecha y hora determinadas de la transición hacia y desde el horario de verano.(For time zones that do not support daylight saving time, the method returns an empty array.) Each TimeZoneInfo.AdjustmentRule object has a DaylightTransitionStart and a DaylightTransitionEnd property that defines the particular date and time of the transition to and from daylight saving time. La propiedad IsFixedDateRule indica si esa transición es fija o flotante.The IsFixedDateRule property indicates whether that transition is fixed or floating.

.NET se basa en la información de zona horaria proporcionada por el sistema operativo Windows y almacenada en el registro..NET relies on time zone information provided by the Windows operating system and stored in the registry. Debido al número de zonas horarias de la tierra, no todas las zonas horarias existentes se representan en el registro.Due to the number of the earth's time zones, not all existing time zones are represented in the registry. Además, dado que el registro es una estructura dinámica, se pueden agregar o quitar zonas horarias predefinidas.In addition, because the registry is a dynamic structure, predefined time zones can be added to or removed from it. Por último, el registro no contiene necesariamente datos históricos de zona horaria.Finally, the registry does not necessarily contain historic time zone data. Por ejemplo, en Windows XP el registro contiene datos sobre un solo conjunto de ajustes de zona horaria.For example, in Windows XP the registry contains data about only a single set of time zone adjustments. Windows Vista admite los datos dinámicos de zona horaria, lo que significa que una sola zona horaria puede tener varias reglas de ajuste que se aplican a intervalos específicos de años.Windows Vista supports dynamic time zone data, which means that a single time zone can have multiple adjustment rules that apply to specific intervals of years. Sin embargo, la mayoría de las zonas horarias definidas en el registro de Windows Vista y admiten el horario de verano tienen solo una o dos reglas de ajuste predefinidas.However, most time zones that are defined in the Windows Vista registry and support daylight saving time have only one or two predefined adjustment rules.

La dependencia de la clase TimeZoneInfo en el registro significa que una aplicación que tenga en cuenta la zona horaria no puede estar seguro de que se ha definido una zona horaria determinada en el registro.The dependence of the TimeZoneInfo class on the registry means that a time zone-aware application cannot be certain that a particular time zone is defined in the registry. Por tanto, el intento de crear instancias de una zona horaria concreta (excepto la zona horaria local o la zona horaria que representa la hora UTC) debe usar el control de excepciones.As a result, the attempt to instantiate a specific time zone (other than the local time zone or the time zone that represents UTC) should use exception handling. También debe proporcionar algún método para permitir que la aplicación continúe si no se pueden crear instancias de un objeto TimeZoneInfo necesario desde el registro.It should also provide some method of letting the application to continue if a required TimeZoneInfo object cannot be instantiated from the registry.

Para controlar la ausencia de una zona horaria necesaria, la clase TimeZoneInfo incluye un método CreateCustomTimeZone, que puede usar para crear zonas horarias personalizadas que no se encuentran en el registro.To handle the absence of a required time zone, the TimeZoneInfo class includes a CreateCustomTimeZone method, which you can use to create custom time zones that are not found in the registry. Para obtener más información sobre cómo crear una zona horaria personalizada, consulte Cómo: crear zonas horarias sin reglas de ajuste y Cómo: crear zonas horarias con reglas de ajuste.For details on creating a custom time zone, see How to: Create time zones without adjustment rules and How to: Create time zones with adjustment rules. Además, puede utilizar el método ToSerializedString para convertir una zona horaria recién creada en una cadena y guardarla en un almacén de datos (como una base de datos, un archivo de texto, el registro o un recurso de aplicación).In addition, you can use the ToSerializedString method to convert a newly created time zone to a string and save it in a data store (such as a database, a text file, the registry, or an application resource). A continuación, puede utilizar el método FromSerializedString para volver a convertir esta cadena en un objeto TimeZoneInfo.You can then use the FromSerializedString method to convert this string back to a TimeZoneInfo object. Para obtener más información, consulte Cómo: guardar zonas horarias en un recurso incrustado y Cómo: restaurar zonas horarias desde un recurso incrustado.For details, see How to: Save time zones to an embedded resource and How to: Restore time zones from an embedded resource.

Dado que cada zona horaria se caracteriza por un desplazamiento desde la hora UTC base, así como por un desplazamiento desde la hora UTC que refleja las reglas de ajuste existentes, la hora de una zona horaria se puede convertir fácilmente en la hora de otra zona horaria.Because each time zone is characterized by a base offset from UTC, as well as by an offset from UTC that reflects any existing adjustment rules, a time in one time zone can be easily converted to the time in another time zone. Para este propósito, el objeto TimeZoneInfo incluye varios métodos de conversión, entre los que se incluyen:For this purpose, the TimeZoneInfo object includes several conversion methods, including:

  • ConvertTimeFromUtc, que convierte la hora UTC a la hora de una zona horaria designada.ConvertTimeFromUtc, which converts UTC to the time in a designated time zone.

  • ConvertTimeToUtc, que convierte la hora de una zona horaria designada en UTC.ConvertTimeToUtc, which converts the time in a designated time zone to UTC.

  • ConvertTime, que convierte la hora de una zona horaria designada en la hora de otra zona horaria designada.ConvertTime, which converts the time in one designated time zone to the time in another designated time zone.

  • ConvertTimeBySystemTimeZoneId, que usa identificadores de zona horaria (en lugar de objetos TimeZoneInfo) como parámetros para convertir la hora de una zona horaria designada en la hora de otra zona horaria designada.ConvertTimeBySystemTimeZoneId, which uses time zone identifiers (instead of TimeZoneInfo objects) as parameters to convert the time in one designated time zone to the time in another designated time zone.

Para obtener más información sobre cómo convertir horas entre zonas horarias, consulte Convertir horas entre zonas horarias.For details on converting times between time zones, see Converting times between time zones.

Vea tambiénSee also