Una de los cálculos que a veces toman tiempo y que sino se hacen bien pueden dar lugar a confusiones y errores es sin dudas es coordinar algo en diferentes zonas horarias, algo tan simple como coordinar una meeting entre varias personas que estén repartidas en varias zonas horarias puede ser una pesadilla.

Por eso me puse a programar una herramienta que permita coordinar a partir de una fecha y hora, obtener la hora exacta en una o varias zonas horarias, incluso teniendo en cuenta cambios de hora verano/invierno, lo que permite realizar un cálculo a futuro sin dar ningún margen a error.

Otro uso muy común y puede que más frecuente para un administrador de sistemas es al analizar logs, es muy habitual que la zona horaria del servidor sea diferente a la del administrador y está a su vez diferente a la del cliente, al analizar logs e informar al cliente de algún evento hay que hacer posiblemente varias veces el cálculo por cada evento que queremos informar al cliente.

Para simplificar este cálculo y efectuar lo de forma rápida y correcta posible es que he escrito esta herramienta y lo he hecho en bash ¿Porque en bash? Porque puedo, punto. El repositorio lo puedes encontrar aquí.

Instalación

cd /tmp

git clone https://github.com/alvarodeleon/tzcalc

sudo cp tzcalc/tzcalc /usr/sbin/tzcalc

sudo chmod + /usr/sbin/tzcalc

Uso

tzcalc --local "[timezone],[date] [time]" --query "[timezone_1],[timezone_2]"

Ejemplo:

tzcalc -l "America/Montevideo,2022-09-10 15:00" -q "America/New_York,Europe/London,Europe/Rome"

Salida

America/New_York.Europe/London
2022-09-10 18:00 America/New_York.Europe/London
2022-09-10 20:00 Europe/Rome

La TimeZone puede ser llenada solo con el nombre de la ciudad, tzcac intentara resolver el nombre de la TZ t localizar la zona correcta para esa ciudad:

tzcalc -l "Montevideo,2022-09-10 15:00" -q "London,Rome"

En caso que diga “[name] is a invalid TZ” se debe completar el nombre completo de la TZ

tzcalc -l "America/Montevideo,2022-09-10 15:00" -q "Europe/London,Europe/Rome"

Si se necesita calcular una fecha en el futuro, puede completarse de la siguiente manera:

tzcalc -l "Montevideo,2022-09-10 15:00" -q "London,Rome"

Si se completa solo la hora, tzcac asume que la fecha es hoy

tzcalc -l "Montevideo,22:00" -q "New_York,London,Rome"

Salida:

2022-09-10 21:00 America/New_York
2022-09-11 02:00 Europe/London
2022-09-11 03:00 Europe/Rome

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading