Manejo de la zona horaria en Python

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *