Hay algunas bibliotecas estándar que podemos usar para las zonas horarias, aquí usaremos pytz . Esta biblioteca tiene una clase de zona horaria para manejar compensaciones fijas arbitrarias de UTC y zonas horarias.
Instalación
pytz es un paquete de terceros que debe instalar. Para instalar pytz, use el siguiente comando:
pip instalar pytz
Empezando
Después de la instalación, importe el paquete pytz y ahora veamos cómo podemos pasar las zonas horarias. La sintaxis básica en Python para obtener la información de fecha y hora es:
fechahora.fechahora.ahora()
La sintaxis anterior devuelve la fecha y hora local actual sin ninguna información de zona horaria. Pero con el uso del paquete pytz podemos manejar esta información de fecha y hora en las distintas zonas horarias: now() nos da la opción de pasar en una zona horaria, por lo que si deja la zona horaria vacía, también devolverá la actual fecha-hora local. La salida de now() depende de la máquina. La configuración de la hora local y la zona horaria de la máquina host determinará la salida.
Entonces, para trabajar con la zona horaria sin problemas, se recomienda usar UTC como su zona horaria base. Para obtener la hora universal coordinada, es decir, la hora UTC, simplemente pasamos el parámetro a la función now(). Para obtener la hora UTC, podemos usar directamente ‘pytz.utc’ como parámetro para la función now() como ‘now(pytz.utc)’. El desplazamiento se mostrará al final como (+ o – horas).
El siguiente código muestra la hora local de la máquina y la hora UTC con compensación.
Ejemplo:
Python3
import datetime import pytz dtObject_local = datetime.datetime.now() dtObject_utc = datetime.datetime.now(pytz.utc) print(dtObject_local) print(dtObject_utc)
Producción:
2021-05-28 12:19:56.962055
2021-05-28 06:49:56.962055+00:00
Como puede ver ahora, obtuvimos la información de fecha y hora de la máquina local y en UTC, el desplazamiento de la zona horaria al final es +00:00.
Si queremos obtener información de fecha y hora de una zona horaria específica, solo necesitamos agregar la zona horaria en el parámetro:
Sintaxis:
.now(pytz.timezone(‘ TU_TIMEZONE ‘))
El parámetro pytz.timezone nos permite especificar la información de la zona horaria como una string. Podemos pasar en cualquier zona horaria disponible y obtendremos la fecha y hora actual de esa zona horaria, y también imprimirá el desplazamiento con respecto al UTC. es decir, la diferencia entre la zona horaria UTC (+00:00) y la zona horaria especificada.
Ejemplo:
Python3
import datetime import pytz dtObject_utc = datetime.datetime.now(pytz.utc) dtObject_asia = datetime.datetime.now(pytz.timezone('Asia/Kolkata')) dtObject_usc = datetime.datetime.now(pytz.timezone('US/Central')) dtObject_turkey = datetime.datetime.now(pytz.timezone('Turkey')) dtObject_eoslo = datetime.datetime.now(pytz.timezone('Europe/Oslo')) dtObject_abelem = datetime.datetime.now(pytz.timezone('America/Belem')) print(dtObject_utc) print(dtObject_asia) print(dtObject_usc) print(dtObject_turkey) print(dtObject_eoslo) print(dtObject_abelem)
Producción:
2021-05-28 23:12:56.559011+00:00
2021-05-29 04:42:58.027452+05:30
2021-05-28 18:12:58.072254-05:00
2021-05-29 02:12:58.092257+03:00
2021-05-29 01:12:58.107930+02:00
2021-05-28 20:12:58.109932-03:00
Aquí tenemos la hora de fecha diferente según las diferentes zonas horarias con desplazamiento. El desplazamiento también mostrará las horas (+/-). También podemos convertir cualquier zona horaria a una zona horaria diferente.
Conversión entre zonas horarias
El método astimezone() se utiliza para manipular, es decir, para convertir los objetos de fecha y hora en el nuevo objeto de fecha y hora especificado. Utiliza una instancia del objeto de fecha y hora y devuelve nueva información de zona horaria.
Sintaxis:
astimezone(pytz.timezone(‘ NEW_TIMEZONE ‘))
Para obtener exactamente lo que necesitamos, se seguirá la siguiente sintaxis.
Sintaxis:
dtObj = datetimeObject_instance.astimezone(pytz.timezone(‘ NEW_TIMEZONE ‘))
dónde,
- dtObj: que almacena el objeto de fecha y hora devuelto con la fecha de hora recién creada
- datetimeObject_instance: objeto de fecha y hora actualmente disponible (es decir, referencia a la fecha y hora local)
- NEW_TIMEZONE: información de la zona horaria que debe cambiarse a
Ejemplo:
Python3
import datetime import pytz # getting our local timezone dtObject_local = datetime.datetime.now() # converting local timezone to 'US/Central' dtObject_usc = dtObject_local.astimezone(pytz.timezone('US/Central')) # now converting 'US/Central' timezone to 'Pacific/Chuuk' dtObject_pchuuk = dtObject_usc.astimezone(pytz.timezone('Pacific/Chuuk')) print(dtObject_local) print(dtObject_usc) print(dtObject_pchuuk)
Producción:
2021-05-29 04:46:26.288233
2021-05-28 18:16:26.288233-05:00
2021-05-29 09:16:26.288233+10:00
pytz tiene una gran lista de zonas horarias disponibles, puede imprimirlas usando el siguiente método.
Ejemplo:
Python3
import pytz for timeZone in pytz.all_timezones: print(timeZone)
Producción:
África/Abiyán
África/Acra
África/Addis_Abeba
África/Argel
África/Asmara
.
.
.
Estados Unidos/Samoa
UTC
Universal
W-SU
MOJADO
zulú
Publicación traducida automáticamente
Artículo escrito por rohitpathak9665 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA