Hola y bienvenidos nuevamente a este blog sobre programación en lenguaje Python. En el día de hoy nos disponemos a ver como podemos obtener la hora actual, no solo en nuestra región, sino también en otras zonas regiones del mundo, para lo cual necesitaremos instalarnos una librería externa de nombre ‘pytz‘. Visto esto, aplicaremos lo aprendido a un caso práctico en el que programaremos un reloj que además de la hora local, pueda mostrarnos la hora correspondiente a otras zonas horarias:

Como hemos señalado, lo primero será instalar ‘pytz‘, librería que nos permitirá ver la fecha y hora de distintas franjas horarias:

Pero antes, empezaremos viendo como podemos usar esta librería para mostrar la hora actual correspondiente a una región determinada. Para empezar empezaremos recordando como obtener la hora local, para lo cual, nos basta con usar el módulo ‘datetime‘ incluido en Python y su función «now()«:

Como se ve, mediante este método obtenemos tanto la fecha (en formato «YYYY-MM-DD») como la hora actual representada en horas, minutos y segundos. Ahora para obtener esa misma información, usaremos la librería ‘pytz‘ que acabamos de instalar:

Como se ve, empezamos usando nuevamente la función «now()» del módulo «datetime» solo que en este caso, pasandole un método «.timezone()» en el que hemos indicado la región concreta cuya hora y fecha queremos conocer. Lo que nos devolverá la fecha y hora (junto a su diferencia con respecto a la hora global «UTC«) de la región en cuestión.
Una vez, que sabemos como obtener la hora (y fecha) actual correspondiente a otras zonas horarias) estamos en condiciones para crear nuestro reloj capaz de mostrar, además de la hora local, la correspondiente a otras regiones. Para agilizar el proceso, partiremos del código que usamos en su momento para crear un reloj digital con ‘tkinter‘ (y cuyo artículo también podéis consultar) al que hemos introducido algunas modificaciones, siendo la primera de ellas, la de importar la librería ‘pytz‘ además de las usadas en su momento:

Tras ello declararemos la clase «WorldClock» que contendrá nuestra aplicación y sus métodos. En este punto también definiremos el diccionario «self.locations()» en el que emparejaremos cada ubicación con su correspondiente zona horaria. Diccionario a partir del cual generaremos el contenido de la lista desplegable de regiones con la que contará nuestra interfaz, usando la función «set_locations()» :


Finalmente, definiremos la función «time()» que obtendrá y mostrará la hora actual actualizándose cada 200 milisegundos (0,2 segundos), usando ‘datetime‘ y ‘pytz‘ (en el caso en que esté seleccionada una ubicación distinta de la local):

En el siguiente enlace podéis consultar el código completo de la aplicación:
https://github.com/antonioam82/ejercicios-python/blob/master/reloj_digital2.py
A su vez, aquí podéis ver el articulo referente a la creación del reloj digital, original tomado como base para este ejercicio:
Saludos.



























































































