Converter UTC em CST em Python

Vaibhhav Khetarpal 10 outubro 2023
  1. Use o módulo dateutil.tz para converter a data e hora de UTC para CST em Python
  2. Use o módulo pytz para converter a data e hora de UTC para CST em Python
  3. Use o módulo zoneinfo para converter a data e hora de UTC para CST em Python
Converter UTC em CST em Python

Python armazena a data e a hora de uma maneira muito sofisticada. Ele tem um tipo de dados específico para armazenar esse tipo de dados. Além disso, Python também fornece um módulo datetime que oferece várias classes para manipular data e hora.

A conversão em fusos horários diferentes é uma parte essencial da manipulação de data e hora. Neste artigo, discutiremos dois desses fusos horários, UTC e CST, e as diferentes maneiras disponíveis para converter o primeiro para o último.

O módulo datetime é uma necessidade e deverá ser importado e utilizado em todos os métodos mencionados no artigo abaixo.

Use o módulo dateutil.tz para converter a data e hora de UTC para CST em Python

O módulo dateutil ativa o módulo datetime padrão, fornecendo algumas extensões significativas. O módulo dateutil.tz fornece implementações de fuso horário que subclassificam o tipo abstrato datetime.tzinfo.

Aqui, usaremos frequentemente a função tz.gettz(), que essencialmente recupera um objeto do fuso horário da string fornecida como seu argumento.

O código a seguir usa o módulo dateutil.tz para converter a data e hora de UTC para CST em 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)

O código acima fornece a seguinte Resultado:

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

Use o módulo pytz para converter a data e hora de UTC para CST em Python

O módulo pytz suporta uma grande maioria de fusos horários, tornando-o o módulo perfeito para fornecer funcionalidades de conversão de data e hora e fornecer funções que permitem cálculos simples de fuso horário no software de aplicação python do programador.

Além disso, o módulo pytz permite a criação de objetos ou instâncias inteligentes datetime que estão cientes de seu fuso horário. O módulo pytz precisa ser instalado manualmente e pode ser feito usando o comando pip.

O código a seguir usa o módulo pytz para converter a data e hora de UTC para CST em 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)

O código acima fornece a seguinte Resultado:

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

Embora ambos os módulos dateutil.tz e pytz sejam utilizados para implementar coisas semelhantes em Python, eles têm algumas diferenças.

  • O módulo pytz suporta quase todos os fusos horários, significativamente mais do que o módulo dateutil.tz oferece.
  • A biblioteca do módulo pytz é significativamente mais otimizada.
  • O módulo pytz é historicamente mais rápido do que dateutil.tz, mas a diferença tem diminuído nas últimas atualizações.
  • O uso do módulo dateutil.tz é recomendado nas versões anteriores do Python quando o módulo pytz não era estável o suficiente.

Use o módulo zoneinfo para converter a data e hora de UTC para CST em Python

Com a introdução do Python 3.9, veio o módulo zoneinfo, que eliminou a necessidade de instalar qualquer outra biblioteca de terceiros para gerenciar fusos horários. O módulo zoneinfo trata de tudo sozinho.

O módulo zoneinfo é utilizado para fornecer uma implementação de fuso horário forte que, conforme especificado no PEP 615, pode suportar o banco de dados de fuso horário IANA.

O código a seguir usa o módulo zoneinfo para converter a data e hora de UTC para CST em 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())

O código acima fornece a seguinte 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

Artigo relacionado - Python DateTime