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 completas
- timedelta→ diferença entre datas ou horas
- timezone→ 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 - timedeltacom- datetimepara 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