✅ Artigo atualizado em Setembro 2026: fusos horários agora com o
zoneinfoda biblioteca padrão (opytzficou como alternativa legada) e correção sobre somar meses e anos, que otimedeltanão faz.
Este é um resumo rápido. Para o guia completo, com conversão de strings, diferença entre datas, datas em português e casos práticos, veja Trabalhando com datas no Python.
Salve salve Pythonista 👋
Neste artigo, vamos explorar o poder da linguagem de programação Python para manipular datas e horários.
Como programadores, muitas vezes precisamos lidar com informações de tempo em nossas aplicações, seja para agendar tarefas, calcular intervalos ou exibir datas e horários para o usuário.
Portanto, é fundamental conhecer as ferramentas e bibliotecas disponíveis em Python para facilitar essa manipulação.
Vá Direto ao Assunto…
- Trabalhando com a biblioteca datetime
- Lidando com fusos horários
- Trabalhando com intervalos de tempo
Trabalhando com a biblioteca datetime
A biblioteca datetime é uma das ferramentas mais úteis para trabalhar com datas e horários em Python.
Ela fornece uma série de classes e métodos para manipular e formatar datas e horários.
Vamos começar importando a biblioteca:
1
import datetime
Obtendo a data e hora atual
Para obter a data e hora atual, podemos utilizar a classe datetime e o método now():
1
2
agora = datetime.datetime.now()
print(agora)
A saída será algo como:
1
2022-01-10 14:25:30.567894
Manipulando datas e horários
Podemos criar objetos datetime para representar uma data específica.
Para isso, utilizamos a função datetime.datetime() e informamos o ano, mês, dia, hora, minuto e segundo:
1
2
data = datetime.datetime(2022, 1, 1, 12, 0, 0)
print(data)
A saída será:
1
2022-01-01 12:00:00
Podemos ainda obter partes específicas de uma data ou horário. Por exemplo, para obter o ano de uma data:
1
2
ano = data.year
print(ano)
A saída será:
1
2022
Podemos também realizar operações matemáticas com datas, como somar ou subtrair dias, semanas, horas ou minutos com timedelta:
1
2
3
data = datetime.datetime(2022, 1, 1)
nova_data = data + datetime.timedelta(days=7)
print(nova_data)
A saída será:
1
2022-01-08 00:00:00
Atenção: o timedelta não aceita meses nem anos (datetime.timedelta(months=1) levanta TypeError), porque meses e anos não têm duração fixa.
Para isso, use o relativedelta, da biblioteca externa python-dateutil (instale com pip install python-dateutil):
1
2
3
4
5
from dateutil.relativedelta import relativedelta
data = datetime.datetime(2022, 1, 31)
print(data + relativedelta(months=1))
print(data + relativedelta(years=1))
A saída será:
1
2
2022-02-28 00:00:00
2023-01-31 00:00:00
Repare que 31 de janeiro + 1 mês vira 28 de fevereiro: o relativedelta ajusta para o último dia válido do mês.
Esses detalhes de datetime fazem parte da base que separa quem programa por tentativa e erro de quem entende o que faz. A Jornada Python constrói essa base, do Python puro ao Django, com suporte de professor:
Formatando datas e horários
A biblioteca datetime também nos permite formatar datas e horários de acordo com nossas necessidades.
Podemos utilizar o método strftime() e especificar um formato desejado.
Por exemplo, para exibir uma data no formato dia/mês/ano:
1
2
3
data = datetime.datetime(2022, 1, 10)
data_formatada = data.strftime("%d/%m/%Y")
print(data_formatada)
A saída será:
1
10/01/2022
Estou desenvolvendo o Ebookr.ai, uma plataforma que transforma suas ideias em ebooks profissionais usando IA - com geração de capa, infográficos e exportação em PDF. Te convido a conhecer!
Lidando com fusos horários
Quando trabalhamos com informações de tempo, muitas vezes precisamos lidar com diferentes fusos horários.
Desde o Python 3.9, a biblioteca padrão tem o módulo zoneinfo, que traz os fusos horários do banco de dados da IANA (como America/Sao_Paulo). Esse é o caminho recomendado, sem instalar nada:
1
2
3
4
5
from zoneinfo import ZoneInfo
fuso_horario = ZoneInfo('America/Sao_Paulo')
data = datetime.datetime.now(fuso_horario)
print(data)
A saída será a data e hora atual no fuso horário de São Paulo, algo como:
1
2026-09-27 10:54:05.097672-03:00
Windows: o Windows não traz o banco de dados de fusos da IANA. Instale o pacote
tzdata(pip install tzdata), que ozoneinfousa automaticamente; sem ele,ZoneInfo(...)levantaZoneInfoNotFoundError.
Em projetos mais antigos você vai encontrar a biblioteca externa pytz, que era a forma padrão antes do zoneinfo. Hoje ela é considerada legada, mas vale saber ler.
Para utilizar a biblioteca pytz, é necessário instalá-la primeiro (de preferência dentro de um ambiente virtual). Você pode fazer isso através do gerenciador de pacotes pip:
1
pip install pytz
Após a instalação, podemos importar a biblioteca e utilizar a função timezone() para definir um fuso horário específico:
1
2
3
4
5
import pytz
fuso_horario = pytz.timezone('America/Sao_Paulo')
data = datetime.datetime.now(fuso_horario)
print(data)
A saída será a data e hora atual no fuso horário de São Paulo, algo como:
1
2022-01-10 14:25:30.567894-03:00
Com pytz, não passe o fuso direto em tzinfo= ao construir um datetime (o resultado sai com o deslocamento histórico -03:06); use fuso_horario.localize(...). Com zoneinfo essa pegadinha não existe.
Está curtindo esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Trabalhando com intervalos de tempo
A biblioteca datetime também oferece suporte para trabalhar com intervalos de tempo.
Podemos utilizar a classe timedelta para representar uma duração de tempo específica.
Por exemplo, para representar um intervalo de 2 horas:
1
2
intervalo = datetime.timedelta(hours=2)
print(intervalo)
A saída será:
1
2:00:00
Podemos somar ou subtrair intervalos de tempo de objetos datetime. Por exemplo, para obter a data e hora daqui a 3 dias:
1
2
3
data_atual = datetime.datetime.now()
data_futura = data_atual + datetime.timedelta(days=3)
print(data_futura)
A saída será algo como (depende do momento da execução):
1
2022-01-13 14:25:30.567894
Conclusão
Neste artigo, exploramos diversas funcionalidades da biblioteca datetime em Python para manipular datas e horários.
Vimos como obter a data e hora atual, manipular datas e horários, formatar informações de tempo, lidar com fusos horários usando o zoneinfo e trabalhar com intervalos de tempo.
Essas habilidades são essenciais para diferentes aplicações que envolvam informações de tempo.
Portanto, é fundamental dominar esses conceitos para realizar operações precisas, evitar erros e fornecer uma melhor experiência aos usuários.
Lembre-se de que a biblioteca datetime é apenas uma das ferramentas disponíveis em Python para trabalhar com datas e horários.
Existem outras bibliotecas, como a dateutil (que usamos para somar meses e anos com relativedelta), que fornecem funcionalidades adicionais para tarefas mais avançadas.
Portanto, não hesite em explorar outras opções se necessário. Para mais exemplos, veja também o post sobre como trabalhar com datas no Python.
Espero que este artigo tenha sido útil para você entender como manipular datas e horários em Python.
Agora, você está preparado para utilizar esses recursos em suas próprias aplicações e tirar o máximo proveito da linguagem.
Se quiser praticar datetime e o restante da linguagem em projetos guiados, do zero ao avançado, conheça a Jornada Python, nosso curso de Python completo.
Nos vemos no próximo artigo, Pythonista! 👋
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6