Converter UTC em CST em Python
-
Use o módulo
dateutil.tz
para converter a data e hora de UTC para CST em Python -
Use o módulo
pytz
para converter a data e hora de UTC para CST em Python -
Use o módulo
zoneinfo
para converter a data e hora de UTC para 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ódulodateutil.tz
oferece. - A biblioteca do módulo
pytz
é significativamente mais otimizada. - O módulo
pytz
é historicamente mais rápido do quedateutil.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ódulopytz
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 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