Fuso Horário no Python e Horário de Verão no Python
Quer saber como tratar fuso horário no Python e ainda conseguir verificar se um sistema está ou não no horário de verão no Python para as suas aplicações?
Para trabalhar com fuso horário no Python, use o módulo datetime junto com zoneinfo (nativo desde o Python 3.9). Você cria datas cientes do fuso com ZoneInfo("America/Sao_Paulo"), converte entre regiões e o próprio banco de fusos cuida do horário de verão automaticamente, sem cálculos manuais de diferença de horas.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
O que você aprende neste vídeo
Resposta rápida: A aula ensina a tratar fuso horário e horário de verão no Python com datetime e pytz. Você aprende a converter texto em data com strptime(), tornar a data ciente do fuso com localize(), convertê-la para outra região com astimezone() e checar o horário de verão com dst(). Desde o Python 3.9, o zoneinfo nativo cumpre o mesmo papel.
Neste vídeo (15 min):
- 1:10 - A biblioteca
datetimejá vem com o Python, e a aula a importa comfrom datetime import datetime - 2:35 - Converter o texto de uma data, 15 de fevereiro de 2024 às 10h, num objeto de data com
datetime.strptime() - 4:50 - Montar o formato com os códigos da documentação:
%dpara dia,%mpara mês,%Ypara ano com quatro dígitos e%Hpara hora em 24 h - 6:20 - A data lida de texto sai naive, sem fuso, e precisa virar aware para saber em qual time zone está
- 7:05 -
pytz.timezone()recebe o nome do fuso como string, doUTCde Greenwich a qualquer região do mundo - 8:20 - Achar o identificador certo na lista List of tz database time zones, padrão compartilhado por várias linguagens e sistemas
- 9:05 -
America/Sao_Pauloé o fuso de Brasília, UTC-3, e as outras regiões do Brasil têm identificadores próprios - 10:30 - Aplicar o fuso à data com
localize()e ver o deslocamento de -3 horas aparecer no print - 11:30 - Criar o fuso
Europe/Paris, que é UTC+1 no horário padrão e UTC+2 no horário de verão - 12:05 - Converter a data para Paris com
astimezone(): 10h de 15/02/2024 em São Paulo equivalem a 14h na França - 12:50 - Trocar a data para 15 de junho de 2024: Paris passa a 15h, cinco horas à frente, por causa do horário de verão
- 13:35 - Perguntar se a data está em horário de verão com
.dst(), de Daylight Saving Time: uma hora em junho, zero em fevereiro
Trechos do vídeo:
- Uma data lida de texto com
strptime()chega naive: ela não carrega fuso horário nenhum até ser localizada numa time zone e virar aware - No formato do
strptime(),%yminúsculo lê o ano com dois dígitos e%Ymaiúsculo, com quatro;%mminúsculo é o mês e%Mmaiúsculo, o minuto - Os nomes de fuso seguem o banco tz, a mesma referência usada por várias linguagens:
America/Sao_Paulocobre o horário de Brasília, em UTC-3, eEurope/Pariscobre a França - A conversão entre fusos considera a data convertida, não o dia em que o código roda: 10h de 15/02/2024 em São Paulo são 14h em Paris, e 10h de 15/06/2024 viram 15h, porque a França está no horário de verão
- O método
dst()vem de Daylight Saving Time e devolve quanto o horário de verão soma naquela data: uma hora em junho em Paris e zero em fevereiro
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Data e Hora no Python
Antes de partir para o horário de verão e fuso horário, é importante que você saiba que no Python, nós temos a biblioteca datetime, que é uma biblioteca de data e hora no Python.
Você tem duas maneiras de utilizar essas biblioteca. A mais comum é fazer o import direto da biblioteca, mas você pode importar apenas uma função específica dessa biblioteca.
import datetime
from datetime import datetimeTexto para Data no Python (strptime)
Após importar a biblioteca, nós vamos dar início ao exemplo da aula de hoje! Imagine que você tenha em um texto a data escrita no formato da variável texto_data, que é um texto, só que você precisa passar isso para o formato de data para conseguir trabalhar com essa informação.
Até porque, você deve saber que não vai conseguir fazer cálculos ou tratamentos de data com essa informação no formato de texto, não é mesmo?
Para isso nós vamos utilizar o .strptime do datetime, onde você vai colocar a informação que vai fazer essa transformação e vai colocar também o formato que a data está, pois você deve saber que em programação é muito comum termos informações no formato americano.
Então é importante que você coloque essa informação corretamente para que consiga fazer essa transformação do texto para data.
Só que não é simplesmente escrever dia ou day, mês ou month… nós vamos utilizar alguns códigos para isso e você pode encontrar esses códigos no link abaixo, que é o site da documentação da biblioteca datetime na parte do strptime, que é o que estamos utilizando.
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
from datetime import datetime
texto_data = "15/02/2024 10:00"
minha_data = datetime.strptime(texto_data, "%d/%m/%Y %H:%M")
print(minha_data)Com esses formatos %d, %m… que você vai encontrar na documentação para que consiga fazer a transformação da forma que precisa, você vai notar que ao utilizarmos o print, o Python já vai reconhecer essa informação como uma data.

Nesse caso você vai visualizar a data como ano/mês/dia, porque é o formato americano, mas o Python já reconhece que essa informação é um data.
Formato de Data no Python e Horário de Verão no Python
Quando nós fazemos a transformação para o formato de data no Python, ele vem no formato naive, ou seja, é um formato que não traz a informação de onde é esse horário, se tem fuso horário ou não.
É um data crua, somente a data sem distinção da localidade. Por isso nós precisamos tornar essa informação em um data inteligente (aware) para que você tenha essa informação de localidade até para saber o fuso horário e se tem horário de verão.
Para fazer essa transformação, nós vamos precisar da biblioteca pytz (python timezone). Essa biblioteca vai poder tornar qualquer ciente do fuso horário dela e conseguir fazer a tradução desses diferentes fusos horários.
Então vamos primeiro escolher um fuso horário para atribuir a data utilizando o pytz.timezone e aqui nós vamos consultar na internet para saber quais os códigos que nós temos para atribuir o fuso horário.
Nesse caso vou deixar 2 links como exemplo para que você possa consultar essas informações.
Depois disso nós vamos precisar atribuir esse fuso horário que escolhemos a nossa data, ou seja, vamos atribuir nesse exemplo, o fuso horário “America/Sao_Paulo” que é o UTC-3 para a data que convertemos.
import pytz
fuso_horario = pytz.timezone("America/Sao_Paulo")
minha_data_com_fuso = fuso_horario.localize()
print(minha_data_com_fuso)
Dá só uma olhada no segundo que print que temos, além da informação de data e horário, o Python mostra o fuso -3 nessa data.
Dessa forma fica muito mais fácil fazer a tradução desse fuso horário para outro, pois como agora já temos a data inteligente, vamos conseguir fazer essa troca de fusos utilizando o .astimezone.
novo_fuso = pytz.timezone("Europe/Paris")
minha_data_novo_fuso = minha_data_com_fuso.astimezone(novo_fuso)
Obs.: Aqui é importante ressaltar que o fuso horário que está aparecendo na data é referente a data que estamos utilizando e não a data atual que estamos rodando o código.
Você consegue notar que agora conseguimos passar a data de 10h para 14h que é o horário que teríamos em Paris e consegue notar que o fuso dessa região é +1 ao invés de -3 que temos em algumas regiões do Brasil.
Agora eu quero te mostrar que se colocarmos uma data em junho, por exemplo, você vai notar uma diferença no fuso de Paris.
from datetime import datetime
texto_data = "15/06/2024 10:00"
minha_data = datetime.strptime(texto_data, "%d/%m/%Y %H:%M")
print(minha_data)
import pytz
fuso_horario = pytz.timezone("America/Sao_Paulo")
minha_data_com_fuso = fuso_horario.localize()
print(minha_data_com_fuso)
novo_fuso = pytz.timezone("Europe/Paris")
minha_data_novo_fuso = minha_data_com_fuso.astimezone(novo_fuso)Dá só uma olhada no resultado. Agora ao invés de termos 14h com o fuso +1, você vai notar que temos 15h com o fuso +2.


Se você der uma olhada na tabela dos códigos dos fusos, vai notar que quando temos o fuso de Paris sendo +1 é o horário normal, mas quando esse fuso é +2 significa que estamos no horário de verão nessa região!
Isso quer dizer que você não precisa saber se tem horário de verão ou não naquele região para poder fazer a transformação da sua data, a biblioteca pytz já faz isso de forma automática!
Além disso, você pode simplesmente utilizar .dst na sua data para verificar se ela está ou não com horário de verão para não ter que ficar consultando uma tabela como fizemos acima.
Esse dst significa Dayligth Saving Time, que é horário de verão, dessa forma você vai saber se a data que você tem está ou não no horário de verão. Com isso tudo já fica automático!
print(minha_data_novo_fuso.dst())
Para esse exemplo com adata em junho, você nota que temos 1h de horário de verão. Caso voltássemos para o exemplo de fevereiro essa informação seria igual a 0, pois não teria horário de verão!
Perguntas frequentes
1. Como converter texto para data no Python?
Use o método datetime.strptime(texto, formato), informando o texto e a máscara correspondente. Por exemplo, datetime.strptime("25/12/2026", "%d/%m/%Y") transforma a string em um objeto de data. O caminho inverso, de data para texto, é feito com strftime, usando os mesmos códigos de formatação.
2. Qual a diferença entre datetime e date no Python?
O objeto date guarda apenas data (ano, mês e dia), enquanto datetime guarda data e hora juntas, incluindo horas, minutos e segundos. Ambos vêm do módulo datetime. Para tarefas que envolvem horário, fuso ou horário de verão, você precisa do datetime, pois o date não armazena horas.
3. Como saber se uma data está no horário de verão no Python?
Com uma data ciente do fuso (usando zoneinfo), chame o método .dst(): se ele retornar um valor diferente de zero, aquela data está em horário de verão. O zoneinfo consulta o banco de fusos do sistema, então respeita as regras de cada região e ano automaticamente.
4. O que é o módulo zoneinfo do Python?
O zoneinfo é o módulo padrão do Python (a partir da versão 3.9) para trabalhar com fusos horários usando o banco de dados IANA. Com ele você associa um fuso a uma data com ZoneInfo("America/Sao_Paulo"), dispensando bibliotecas externas como a antiga pytz para a maioria dos casos.
Conclusão – Fuso Horário no Python
Nessa aula eu te ensinei sobre fuso horário no Python e horário de verão no Python, pois nem sempre você está criando um projeto para ser utilizado na sua região, então é importante que você consiga não só fazer a transição de fusos como saber se a região em questão tem ou não horário de verão.
Já imaginou se você cria um sistema que faz uma atualização ou automação com base no horário atual e não se atenta ao fato da outra região ter um fuso diferente ou até mesmo ter horário de verão?
Ainda mais se for uma aplicação que precisa ser executada em um horário específico, já pensou no problema que isso pode gerar simplesmente porque não fez a transição correta do fuso e não verificou o horário de verão?
Isso pode gerar sérios problemas, principalmente se for uma automação de empresa quue tem horários precisos para rodar.
Por mais que parece algo simples, quando estamos tratando de projetos mais complexos e importantes são esses pequenos detalhes que fazem toda a diferença, pois um erro desse pode gerar um problema enorme dentro da empresa.
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes da Hashtag Treinamentos
- Dots do ChatGPT: o que é e como usar esse agente de IADescubra o que é o Dots do ChatGPT, como configurar, integrar com Slack e agenda e se vale a pena usar esse novo agente de IA da OpenAI.
- GPT-6 Astra: 7 usos reais do novo modelo da OpenAIVeja 7 usos reais do GPT-6 Astra, o novo modelo da OpenAI que executa tarefas sozinho no computador. Entenda como ele funciona e onde ainda erra.
- Jev IA: o que é e como usar essa IA que não escreveEntenda o que é o Jev IA, a inteligência artificial classificadora mais rápida e barata do mercado, e veja 5 usos práticos para seus fluxos.
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








