Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

Cambios de zona horaria en .NET

ZonasHorarias

Hacer un cambio de zona horaria parece una tarea muy sencilla: basta con sumar o restar las horas de diferencia de la nuestra actual y listo ¿verdad?.

En realidad es mucho más complicado que eso. Para empezar existen regiones del mundo que no se encuentran un número de horas exacto por delante o por detrás de UTC. Por ejemplo, Venezuela se encuentra en UTC-04:30 (es decir, 4 horas y media por detrás), y Nepal está en UTC+05:45 (o sea, 5 horas y tres cuartos por delante). Otras áreas geográficas tienen zonas horarias verticales y horizontales en ocasiones (Australia en verano, por ejemplo). Y el cambio horario para ahorro de energía no se efectúa al mismo tiempo en todo el mundo, sino con semanas de diferencia. La complejidad es muy alta y no sirve simplemente sumar o restar un número de horas.

Por suerte en .NET a partir de su versión 4.5 disponemos de una clase especializada para ayudarnos a gestionar estas situaciones. Se trata de la clase TimeZoneInfo.

Gracias a las propiedades de esta clase es fácil averiguar los datos de cualquier zona horaria. Por ejemplo, con este código averiguamos la información horaria del usuario actual:

ZonaHorariaActual

Mostrándose en la consola algo como lo siguiente:

ZonaHorariaActual-Res

Para poder cambiar la hora desde la zona actual a otra zona, lo primero que necesitamos es averiguar el nombre de la zona a la que queremos convertir. Actualmente se definen más de 100 zonas horarias diferentes. Microsoft no ofrece un listado en el que se vean los nombres de todas estas zonas para consultarlas, pero es muy sencillo obtenerlo, nuevamente gracias a la misma clase que antes, con un código como este:

ZonasHorarias-Listar

Este código mostrará por pantalla las zonas horarias definidas por .NET.

Bien, ahora para convertir de una zona a otra lo que tenemos que hacer es lo siguiente:

ZonaHoraria-Cambio

Lo que se hace en este caso es cambiar la hora a la zona de Venezuela (UTC-4:30), para lo cual necesitamos el nombre de la zona correspondiente que en este caso, desde la lista anterior, vemos que es "Venezuela Standard Time". Obtenemos la información de la zona horaria y convertimos la fecha y hora actuales a esa zona con el método ConvertTime de la clase especializada:

ZonaHoraria-Cambio-Res

Fíjate en que es importante incluir la fecha completa para hacer el cálculo ya que dependiendo de la época del año o incluso del año contenido en la fecha (puede ser una fecha antigua).

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (1) -

Excelente post, muy bien explicado y era exactamente lo que necesitaba.

Saludos y excelente pagina :)

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.