Convertir UTC a CST en Python

Vaibhhav Khetarpal 10 octubre 2023
  1. Utilice el módulo dateutil.tz para convertir la fecha y la hora de UTC a CST en Python
  2. Utilice el módulo pytz para convertir la fecha y la hora de UTC a CST en Python
  3. Utilice el módulo zoneinfo para convertir la fecha y la hora de UTC a CST en Python
Convertir UTC a CST en Python

Python almacena la fecha y la hora de una manera muy sofisticada. Tiene un tipo de datos específico para almacenar este tipo de datos. Además, Python también proporciona un módulo datetime que ofrece varias clases para manipular la fecha y la hora.

La conversión a diferentes zonas horarias es una parte esencial de la manipulación de la fecha y la hora. En este artículo, discutiremos dos de esas zonas horarias, a saber, UTC y CST, y las diferentes formas disponibles para convertir la primera en la segunda.

El módulo datetime es una necesidad y deberá importarse y utilizarse en todos los métodos mencionados en el artículo siguiente.

Utilice el módulo dateutil.tz para convertir la fecha y la hora de UTC a CST en Python

El módulo dateutil potencia el módulo estándar datetime proporcionando algunas extensiones importantes. El módulo dateutil.tz proporciona implementaciones de zona horaria que subclasifican el tipo abstracto datetime.tzinfo.

Aquí, usaremos frecuentemente la función tz.gettz(), que esencialmente recupera un objeto de la zona horaria de la cadena dada pasada como su argumento.

El siguiente código usa el módulo dateutil.tz para convertir la fecha y la hora de UTC a CST en Python.

import datetime
from dateutil import tz

from_zone = tz.gettz("UTC")
to_zone = tz.gettz("America/Chicago")
json_data = {"time": "2021-10-08T08:17:42Z"}
utc = datetime.datetime.strptime(json_data["time"], "%Y-%m-%dT%H:%M:%SZ")
utc = utc.replace(tzinfo=from_zone)
cst = utc.astimezone(to_zone)
print(utc)
print(cst)

El código anterior proporciona el siguiente Resultado:

2021-10-08 08:17:42+00:00
2021-10-08 03:17:42-05:00

Utilice el módulo pytz para convertir la fecha y la hora de UTC a CST en Python

El módulo pytz admite una gran mayoría de zonas horarias, lo que lo convierte en el módulo perfecto para proporcionar funcionalidades de conversión de fecha y hora y proporcionar funciones que permiten cálculos simples de zona horaria en el software de aplicación Python del programador.

Además, el módulo pytz permite la creación de instancias o objetos datetime inteligentes que son conscientes de su zona horaria. El módulo pytz debe instalarse manualmente y se puede hacer usando el comando pip.

El siguiente código utiliza el módulo pytz para convertir la fecha y la hora de UTC a CST en Python

from datetime import datetime, timezone
import pytz

fmt = "%Y-%m-%d %H:%M:%S %Z%z"
e = pytz.timezone("US/Central")

time_from_utc = datetime.fromtimestamp(1607020200, tz=timezone.utc)
time_from = time_from_utc.astimezone(e)
time_from.strftime(fmt)
time_to_utc = datetime.fromtimestamp(1609785000, tz=timezone.utc)
time_to = time_to_utc.astimezone(tz=pytz.timezone("US/Central"))
print(time_to_utc)
print(time_to)

El código anterior proporciona el siguiente Resultado:

2021-01-04 18:30:10+00:00
2021-01-04 12:30:10-06:00

Aunque los módulos dateutil.tz y pytz se utilizan para implementar cosas similares en Python, tienen algunas diferencias.

  • El módulo pytz soporta casi todas las zonas horarias, significativamente más de lo que ofrece el módulo dateutil.tz.
  • La biblioteca del módulo pytz está significativamente más optimizada.
  • El módulo pytz es históricamente más rápido que dateutil.tz, pero la brecha se ha ido reduciendo en las últimas actualizaciones.
  • Se recomienda el uso del módulo dateutil.tz en las versiones anteriores de Python cuando el módulo pytz no era lo suficientemente estable.

Utilice el módulo zoneinfo para convertir la fecha y la hora de UTC a CST en Python

Con la introducción de Python 3.9 vino el módulo zoneinfo, que eliminó la necesidad de instalar otras bibliotecas de terceros para administrar las zonas horarias. El módulo zoneinfo se ocupa de todo en sí.

El módulo zoneinfo se utiliza para proporcionar una implementación sólida de la zona horaria que, como se especifica en PEP 615, puede admitir la base de datos de la zona horaria IANA.

El siguiente código utiliza el módulo zoneinfo para convertir la fecha y la hora de UTC a CST en Python.

# >= Python 3.9
from datetime import datetime
from zoneinfo import ZoneInfo

naive_datetime = datetime(2021, 10, 8, 12, 0, 0)
user_tz_preference = ZoneInfo("US/Central")

user_datetime = naive_datetime.replace(tzinfo=user_tz_preference)
user_datetime = datetime(2011, 10, 26, 12, tzinfo=ZoneInfo("US/Central"))
utc_datetime = user_datetime.astimezone(ZoneInfo("UTC"))
print(user_datetime.isoformat())
print(utc_datetime.isoformat())

El código anterior proporciona el siguiente Resultado:

# 2021-10-08T12:00:00-06:00
# 2021-10-08T19:00:00+00:00
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Artículo relacionado - Python DateTime