Manipulação de Datas e Horas em Python com o Módulo datetime
datetime, que torna essas operações muito mais fáceis e eficientes.Neste artigo, você vai aprender:
Como obter datas e horas atuais.
Como criar datas e horários específicos.
Como formatar datas e horas para exibição.
Como realizar operações aritméticas com datas.
Como lidar com fusos horários.
Exemplos práticos para aplicações reais.
🔹 O que é o módulo datetime?
O módulo datetime é parte da biblioteca padrão do Python e fornece classes para trabalhar com:
date→ apenas data (ano, mês, dia)time→ apenas hora (hora, minuto, segundo, microsegundo)datetime→ data e hora completastimedelta→ diferença entre datas ou horastimezone→ fusos horários
Ele oferece uma forma estruturada e segura de manipular datas sem precisar se preocupar com cálculos manuais.
🔹 Obtendo a data e hora atual
Para começar, podemos obter a data e hora atuais usando datetime.now():
from datetime import datetime
agora = datetime.now()
print("Data e hora atuais:", agora)
Saída típica:
Data e hora atuais: 2025-10-01 11:35:42.123456
Se você quiser apenas a data ou apenas a hora, pode usar:
print("Data:", agora.date())
print("Hora:", agora.time())
🔹 Criando datas e horas específicas
Você também pode criar objetos date, time ou datetime manualmente:
from datetime import date, time, datetime
# Data específica
data_nascimento = date(1995, 6, 15)
print("Data de nascimento:", data_nascimento)
# Hora específica
horario = time(14, 30, 45)
print("Horário:", horario)
# Data e hora combinadas
evento = datetime(2025, 12, 25, 18, 0, 0)
print("Evento:", evento)
📌 Observação: O construtor datetime(year, month, day, hour, minute, second) permite criar qualquer data/hora exata.
🔹 Formatando datas e horas
Para exibir datas de forma legível, usamos o método strftime(). Ele converte objetos datetime em strings customizadas:
from datetime import datetime
agora = datetime.now()
# Formatos comuns
print(agora.strftime("%d/%m/%Y")) # 01/10/2025
print(agora.strftime("%A, %d de %B de %Y")) # Quarta-feira, 01 de Outubro de 2025
print(agora.strftime("%H:%M:%S")) # 11:35:42
Alguns códigos úteis do strftime():
| Código | Significado |
|---|---|
| %d | Dia do mês (01-31) |
| %m | Mês (01-12) |
| %Y | Ano completo (2025) |
| %H | Hora (00-23) |
| %M | Minuto (00-59) |
| %S | Segundo (00-59) |
| %A | Nome completo do dia |
| %B | Nome completo do mês |
🔹 Convertendo strings em datas (strptime)
Às vezes, você recebe datas como texto (ex: “25/12/2025”) e precisa convertê-las para datetime. Para isso usamos strptime():
from datetime import datetime
data_texto = "25/12/2025"
data_objeto = datetime.strptime(data_texto, "%d/%m/%Y")
print("Data convertida:", data_objeto)
Agora, data_objeto pode ser manipulada como um objeto datetime, não apenas como string.
🔹 Operações com datas (timedelta)
Para adicionar ou subtrair dias, horas ou minutos, usamos timedelta:
from datetime import datetime, timedelta
hoje = datetime.now()
print("Hoje:", hoje)
# Adicionar 10 dias
futuro = hoje + timedelta(days=10)
print("Daqui a 10 dias:", futuro)
# Subtrair 5 horas
passado = hoje - timedelta(hours=5)
print("5 horas atrás:", passado)
Você também pode calcular a diferença entre datas:
data_evento = datetime(2025, 12, 25)
dias_restantes = data_evento - hoje
print("Dias até o evento:", dias_restantes.days)
🔹 Lidando com fusos horários (timezone)
Para trabalhar com horários globais, o módulo oferece a classe timezone:
from datetime import datetime, timezone, timedelta
# Fuso horário UTC+3
fuso = timezone(timedelta(hours=3))
agora_fuso = datetime.now(fuso)
print("Hora em UTC+3:", agora_fuso)
📌 Para aplicações que lidam com APIs internacionais ou bancos de dados globais, sempre use UTC internamente e converta apenas na exibição.
🔹 Exemplos práticos de aplicação
1. Validação de datas
from datetime import datetime
data_input = "31/02/2025"
try:
data_validada = datetime.strptime(data_input, "%d/%m/%Y")
except ValueError:
print("Data inválida!")
2. Cronômetro simples
from datetime import datetime, timedelta
import time
inicio = datetime.now()
time.sleep(3) # simula processamento
fim = datetime.now()
duracao = fim - inicio
print(f"Processamento levou {duracao.total_seconds()} segundos")
3. Geração de relatórios mensais
from datetime import datetime, timedelta
hoje = datetime.now()
primeiro_dia_mes = hoje.replace(day=1)
print("Relatório a partir de:", primeiro_dia_mes.strftime("%d/%m/%Y"))
🔹 Dicas e boas práticas
Sempre use objetos
datetimeao invés de manipular strings manualmente.Prefira UTC para armazenar datas em sistemas distribuídos.
Use
strftimepara exibir datas no formato do usuário final.Combine
timedeltacomdatetimepara cálculos seguros de datas.
✅ Conclusão
O módulo datetime é extremamente poderoso e essencial para qualquer desenvolvedor Python que trabalhe com datas e horas, seja em:
Aplicações financeiras
Sistemas de agendamento
Relatórios automáticos
Registro de logs
Integrações com APIs
Com os conceitos deste artigo, você já consegue:
Obter datas e horas atuais
Criar datas e horas personalizadas
Realizar cálculos com datas
Lidar com fusos horários
Formatar datas para exibição amigável
Agora é hora de praticar! Experimente criar uma aplicação que:
Conte os dias restantes para o próximo feriado
Gere logs com timestamps
Automatize relatórios semanais

Comentários
Postar um comentário