O módulo datetime em Python oferece ferramentas poderosas para trabalhar com datas e horas. Esta biblioteca é essencial para criar relatórios, análises, agendar eventos e processar timestamps em qualquer projeto de software.
Fundamentos do módulo datetime
Importação e classes principais
O módulo datetime faz parte da biblioteca padrão do Python e não requer instalação adicional:
import datetime
from datetime import date, time, datetime, timedelta, timezone
Classes principais do módulo:
- datetime.date — trabalha com datas (ano, mês, dia)
- datetime.time — trabalha com horas (hora, minuto, segundo)
- datetime.datetime — combina data e hora
- datetime.timedelta — representa a diferença entre datas/horas
- datetime.timezone — trabalha com fusos horários
Obtendo data e hora atuais
from datetime import datetime, date
# Data e hora atuais
now = datetime.now()
print(f"Data e hora atuais: {now}")
# Apenas a data atual
today = date.today()
print(f"Data de hoje: {today}")
Criando e manipulando datas
Criação manual de datas
from datetime import date, datetime
# Criando uma data específica
custom_date = date(2025, 5, 9)
print(f"Data definida: {custom_date}")
# Criando data e hora
custom_datetime = datetime(2025, 5, 9, 14, 30, 45)
print(f"Data e hora definidas: {custom_datetime}")
Extraindo componentes da data
today = date.today()
print(f"Ano: {today.year}")
print(f"Mês: {today.month}")
print(f"Dia: {today.day}")
print(f"Dia da semana: {today.weekday()}") # 0 = segunda-feira, 6 = domingo
Trabalhando com horas
Criação e manipulação de objetos de hora
from datetime import time
# Criando uma hora
custom_time = time(14, 30, 45)
print(f"Hora definida: {custom_time}")
# Extraindo componentes da hora
print(f"Horas: {custom_time.hour}")
print(f"Minutos: {custom_time.minute}")
print(f"Segundos: {custom_time.second}")
Obtendo hora com microssegundos
from datetime import datetime
now = datetime.now()
print(f"Hora com microssegundos: {now}")
print(f"Microssegundos: {now.microsecond}")
Operações aritméticas com datas
Usando timedelta
from datetime import date, datetime, timedelta
# Operações com datas
today = date.today()
tomorrow = today + timedelta(days=1)
last_week = today - timedelta(weeks=1)
next_month = today + timedelta(days=30)
print(f"Amanhã: {tomorrow}")
print(f"Semana passada: {last_week}")
print(f"Próximo mês: {next_month}")
# Operações mais complexas
future_date = today + timedelta(days=100, hours=5, minutes=30)
print(f"Daqui a 100 dias, 5 horas e 30 minutos: {future_date}")
Calculando a diferença entre datas
from datetime import date, datetime
start_date = date(2025, 1, 1)
end_date = date(2025, 12, 31)
# Diferença em dias
difference = end_date - start_date
print(f"Diferença em dias: {difference.days}")
# Diferença em segundos para datetime
start_time = datetime(2025, 5, 9, 10, 0, 0)
end_time = datetime(2025, 5, 9, 15, 30, 45)
time_diff = end_time - start_time
print(f"Diferença em segundos: {time_diff.total_seconds()}")
print(f"Diferença em horas: {time_diff.total_seconds() / 3600}")
Formatação de datas e horas
Método strftime
from datetime import datetime
now = datetime.now()
# Vários formatos
print(now.strftime("%d/%m/%Y")) # Exemplo: 09/05/2025
print(now.strftime("%H:%M:%S")) # Exemplo: 14:30:45
print(now.strftime("%A, %d de %B de %Y")) # Exemplo: Sexta-feira, 09 de Maio de 2025