Dependiendo del tipo de aplicación que albergues en un servidor, la zona horaria puede llegar a ser muy importante. En algunas, con que todos los registros que se almacenen tengan la misma base horaria es suficiente. En otros es algo crucial poner la correcta. Sin ir más lejos, un blog como este necesita estar en la zona horaria correcta o los posts saldrían publicados a horas incorrectas. En otros casos puede ser peor. Por ejemplo, si tu aplicación debe efectuar ciertas tareas programadas a determinadas horas, no es lo mismo estar en la zona horaria de España o la de Seattle (9 horas menos).

Por defecto, todas las WebApps de Azure tienen la zona horaria GMT, independientemente de la zona del mundo en la que estén alojadas. O sea, la hora de Londres.

Por ejemplo, este blog que estás leyendo se ejecuta en una WebApp de Azure ubicada en la región "West Europe". O sea, que seguramente estará en el un Data Center en Holanda y por lo tanto le correspondería la zona horaria de Europa Central, que es la misma que en España. Sin embargo una simple línea de código nos puede mostrar la hora en una página:

DateTime.Now.ToString()

y nos dice que la hora es la de londres, GMT, una hora menos.

Así que, ¿cómo puedes hacer para ponerle la hora que necesitas (en mi caso la de España)?

Por suerte es muy sencillo. Basta con acceder a la sección de Configuration de tu Web App y añadir una nueva entrada llamada WEBSITE_TIME_ZONE, pulsando en el botón "+ New Application Setting" que verás allí. Esto te abrirá un nuevo diálogo en el lateral para establecer el ajuste y su valor:

Añadir nuevo ajuste de configuración a una Azure Webapp

En este caso, para la España peninsular, el valor apropiado es el que se ve en la imagen: Romance Standard Time.

¿Cómo sabes qué valor de Zona Horaria debes establecer?

Bueno, si tu Web App se ejecuta bajo Windows, como es mi caso, debes introducir el valor que indique la columna Timezone de esta tabla de la documentación de Microsoft. Puedes obtener una lista usando la línea de comandos de Windows y escribiendo:

tzutil /l > zonas.txt

que generará un archivo zonas.txt con todos los valores.

Si por el contrario tu Web App se ejecuta bajo Linux, el valor apropiado cambia y deberás usar el valor de la columna TZ database name de esta tabla de la Wikipedia.

Personalmente me parece mucho mejor el valor de Linux que el de Windows, ya que es más fácil saber exactamente a qué se refiere. Sin haberlo visto nunca antes ¿qué valor te parece más clarificador: Romance Standard Time o Europe/Madrid? Pero bueno, es lo que hay...

Nota 1: Antes de que me lo digas, no puede ser simplemente un UTC+1 o similar (que sería incluso más fácil) porque esa hora no es válida más que en ciertas épocas del año. Se cambia de zona horaria dos veces al año en la mayor parte de los países, y el día de cambio no es el mismo en todos los que están en la misma zona horaria... Échale un vistazo a mi artículo "7 mitos sobre tiempo y horas que muchos programadores se creen (y que son mentira)".

Nota 2: Por cierto, en España, para las Islas Canarias, los valores apropiados serían "GMT Standard Time" (ya que llevan la misma hora que Londres y sus mismos cambios horarios)  y en Linux: "Atlantic/Canary". Mucho más claro el de Linux ¿no?

La caja de verificación que hay en el dialogo y que pone "Deployment Slot Setting" sirve para decidir si este ajuste se aplicará solamente a este slot de despliegue de la aplicación (si lo marcas) o si se debe intercambiar también con los demás slots en caso de que tengas varios (más detalles sobre esto). Si es un sitio relativamente pequeño y sólo tienes uno, como es mi caso, da igual lo que hagas. generalmente no debes marcarlo.

Acepta y dale al botón de guardar ("Save") en el panel de configuraciones.

¡Listo! Tu aplicación ya irá con la hora correcta.

¡Espero que te resulte útil!

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA