Fechas, horas y zonas horarias

Además de la estructura básica DateTime, .NET proporciona las siguientes clases que permiten trabajar con zonas horarias:

  • TimeZone

    Use esta clase para trabajar con la zona horaria local del sistema y la zona de la hora universal coordinada (UTC). La clase TimeZoneInfo reemplaza en gran medida la funcionalidad de la clase TimeZone.

  • TimeZoneInfo

    Use esta clase para trabajar con cualquier zona horaria predefinida en un sistema, para crear zonas horarias nuevas y para convertir fácilmente fechas y horas desde una zona horaria a otra. Para desarrollo nuevo, debe usar la clase TimeZoneInfo, en lugar de la clase TimeZone.

  • DateTimeOffset

    Use esta estructura para trabajar con fechas y horas cuyo desplazamiento (o diferencia) con respecto a la hora UTC es conocido. La estructura DateTimeOffset combina un valor de fecha y hora con ese desplazamiento de hora de UTC. Debido a su relación con la hora UTC, un valor individual de fecha y hora identifica de forma inequívoca un punto temporal único. Esto hace que un valor de DateTimeOffset sea más portátil de un equipo a otro que un valor de DateTime.

A partir de .NET 6, están disponibles los siguientes tipos:

  • DateOnly

    Utilice esta estructura al trabajar con un valor que solo representa una fecha. La fecha representa todo el día, desde el principio del día hasta el final. DateOnly tiene un rango de 0001-01-01 a 9999-12-31. Además, este tipo representa la combinación de mes, día y año sin una hora específica. Si anteriormente usó un tipo DateTime en el código para representar una fecha que ignoraba la hora, use este tipo en su lugar.

  • TimeOnly

    Use esta estructura para representar una hora sin una fecha. La hora representa las horas, los minutos y los segundos de un día no específico. TimeOnly tiene un rango de 00:00:00.0000000 a 23:59:59.9999999. Este tipo se puede usar para reemplazar los tipos DateTime y TimeSpan en el código cuando se usan para representar una hora.

La siguiente sección proporciona la información que necesita para trabajar con zonas horarias y para crear aplicaciones basadas en la zona horaria que puedan convertir fechas y horas de una zona horaria a otra.

En esta sección

Información general sobre zonas horarias
Describe la terminología, los conceptos y los problemas relacionados con la creación de aplicaciones basadas en la zona horaria.

Elegir entre DateTime, DateTimeOffset, TimeSpan y TimeZoneInfo
Describe cuándo usar los tipos DateTime, DateTimeOffset y TimeZoneInfo al trabajar con datos de fecha y hora.

Búsqueda de las zonas horarias definidas en un sistema local
Describe cómo enumerar las zonas horarias que se encuentran en un sistema local.

Enumerar zonas horarias presentes en un equipo
Proporciona ejemplos que enumeran las zonas horarias definidas en el registro de un equipo y que permiten a los usuarios seleccionar una zona horaria predefinida de una lista.

Cómo: Obtener acceso a los objetos de zona horaria local y UTC predefinidos
Describe cómo tener acceso a la hora universal coordinada y a la zona horaria local.

Cómo: Crear instancias de un objeto TimeZoneInfo
Describe cómo crear una instancia de un objeto TimeZoneInfo desde el registro del sistema local.

Crear instancias de un objeto DateTimeOffset
Describe las formas en que pueden crearse instancias de un objeto DateTimeOffset y las formas en que un valor DateTime se puede convertir en un valor DateTimeOffset.

Cómo: Crear zonas horarias sin reglas de ajuste
Describe cómo crear una zona horaria personalizada que no admite la transición al horario de verano o desde este.

Cómo: Crear zonas horarias con reglas de ajuste
Describe cómo crear una zona horaria personalizada que admite una o varias transiciones al horario de verano o desde este.

Guardado y restauración de zonas horarias
Describe la compatibilidad de TimeZoneInfo con la serialización y deserialización de datos de zona horaria y muestra algunos de los escenarios en que se pueden usar estas características.

Cómo: Guardar zonas horarias en un recurso incrustado
Describe cómo crear una zona horaria personalizada y guardar su información en un archivo de recursos.

Cómo: Restaurar zonas horarias de un recurso incrustado
Describe cómo crear instancias de zonas horarias personalizadas que se guardaron en un archivo de recursos incrustado.

Efectuar operaciones aritméticas con fechas y horas
Describe los aspectos necesarios para agregar, sustraer y comparar los valores DateTime y DateTimeOffset.

Usar zonas horarias en operaciones aritméticas de fecha y hora
Describe cómo realizar la aritmética de fecha y hora que refleja las reglas de ajuste de una zona horaria.

Convertir entre DateTime y DateTimeOffset
Describe cómo convertir valores entre DateTime y DateTimeOffset.

Convertir horas entre zonas horarias
Describe cómo convertir las horas de una zona horaria a otra.

Cómo: Resolver horas ambiguas
Describe cómo resolver una hora ambigua asignándola a la hora estándar de la zona horaria.

Cómo: Permitir que los usuarios resuelvan horas ambiguas
Describe cómo permitir que los usuarios determinen la asignación entre una hora local ambigua y la hora universal coordinada.

Referencia

System.TimeZoneInfo