Data e Tempo
Trabalhar com datas e horas é mais comum do que parece: calcular a idade de alguém, saber quantos dias faltam para um evento, registrar quando algo aconteceu. Python tem um módulo chamado datetime que resolve tudo isso de forma simples.
Neste tópico você vai aprender a usar datas, horas e calcular diferenças entre elas.
O módulo datetime
O módulo datetime contém várias classes úteis:
date- trabalha com datas (ano, mês, dia)time- trabalha com horas (hora, minuto, segundo, microssegundo)datetime- combina data e horatimedelta- representa diferenças entre datas/horas
Importando o módulo
import datetime
Classe date
Representa uma data específica.
import datetime
data_hoje = datetime.date.today()
print(f"Data de hoje: {data_hoje}")
data_aniversario = datetime.date(2024, 12, 25)
print(f"Natal: {data_aniversario}")
print(f"Ano: {data_aniversario.year}")
print(f"Mês: {data_aniversario.month}")
print(f"Dia: {data_aniversario.day}")
Classe time
Representa um horário específico.
import datetime
hora_atual = datetime.time(14, 30, 45)
print(f"Horário: {hora_atual}")
print(f"Hora: {hora_atual.hour}")
print(f"Minuto: {hora_atual.minute}")
print(f"Segundo: {hora_atual.second}")
Classe datetime
Combina data e hora.
import datetime
agora = datetime.datetime.now()
print(f"Agora: {agora}")
data_hora = datetime.datetime(2024, 12, 25, 14, 30, 0)
print(f"Natal às 14:30: {data_hora}")
print(f"Data: {agora.date()}")
print(f"Hora: {agora.time()}")
timedelta — diferenças entre datas
from datetime import datetime, timedelta
hoje = datetime.now()
daqui_7_dias = hoje + timedelta(days=7)
print(f"Daqui 7 dias: {daqui_7_dias}")
ha_3_horas = hoje - timedelta(hours=3)
print(f"3 horas atrás: {ha_3_horas}")
Formatando datas com strftime
from datetime import datetime
agora = datetime.now()
print(agora.strftime("%d/%m/%Y")) # 25/12/2024
print(agora.strftime("%H:%M:%S")) # 14:30:00
print(agora.strftime("%d de %B de %Y")) # 25 de December de 2024
Parsing com strptime
from datetime import datetime
data = datetime.strptime("25/12/2024", "%d/%m/%Y")
print(data)
Erros comuns
from datetime import datetime, timedelta
# ❌ Errado: formato não corresponde
data = datetime.strptime("25/12/2024", "%Y-%m-%d")
# ✅ Certo
data = datetime.strptime("25/12/2024", "%d/%m/%Y")
# ❌ Errado: somar direto
amanha = datetime.now() + 1
# ✅ Certo: usar timedelta
amanha = datetime.now() + timedelta(days=1)