🌗 ← Índice
Data: 14/08/2026
Nível: Intermediário (Mês 2 — POO)
from datetime import datetime, date, time, timedelta
agora = datetime.now() # 2026-08-14 15:30:45.123456
hoje = date.today() # 2026-08-14
hora = time(15, 30, 45) # 15:30:45
print(agora.year, agora.month, agora.day)
print(agora.hour, agora.minute, agora.second)
nascimento = datetime(1995, 3, 10, 14, 30)
print(nascimento) # 1995-03-10 14:30:00
from datetime import datetime, timedelta
hoje = datetime.now()
daqui_7_dias = hoje + timedelta(days=7)
ontem = hoje - timedelta(days=1)
daqui_2h30 = hoje + timedelta(hours=2, minutes=30)
print(daqui_7_dias)
inicio = datetime(2026, 1, 1)
fim = datetime(2026, 12, 31)
diferenca = fim - inicio
print(diferenca.days) # 364
print(diferenca.total_seconds()) # em segundos
agora = datetime.now()
print(agora.strftime("%d/%m/%Y")) # 14/08/2026
print(agora.strftime("%d de %B de %Y")) # 14 de August de 2026
print(agora.strftime("%H:%M:%S")) # 15:30:45
print(agora.strftime("%A")) # Friday
| Código | Significado | Exemplo |
|---|---|---|
| `%d` | dia | 14 |
| `%m` | mês | 08 |
| `%Y` | ano (4 díg.) | 2026 |
| `%H` | hora (24h) | 15 |
| `%M` | minuto | 30 |
| `%S` | segundo | 45 |
| `%B` | mês por extenso | August |
| `%A` | dia da semana | Friday |
texto = "14/08/2026 15:30"
data = datetime.strptime(texto, "%d/%m/%Y %H:%M")
print(data) # 2026-08-14 15:30:00
⚠️ O formato precisa bater EXATAMENTE com a string, senão levanta `ValueError`.
from datetime import datetime, timezone, timedelta
utc_agora = datetime.now(timezone.utc) # hora em UTC
print(utc_agora)
# Offset fixo (UTC-3 — Brasil)
brasilia = timezone(timedelta(hours=-3))
print(utc_agora.astimezone(brasilia))
from datetime import datetime
from zoneinfo import ZoneInfo
agora = datetime.now(ZoneInfo("America/Sao_Paulo"))
print(agora) # horário de Brasília
nova_york = agora.astimezone(ZoneInfo("America/New_York"))
print(nova_york)
💡 `zoneinfo` usa a base de dados IANA do sistema — sem dependência externa.
d1 = datetime(2026, 8, 10)
d2 = datetime(2026, 8, 14)
print(d1 < d2) # True
print(d2 - d1) # 4 days, 0:00:00
Crie uma função dias_uteis(inicio, fim) que retorna a quantidade de dias úteis (segunda a sexta) entre duas datas:
def dias_uteis(inicio: datetime, fim: datetime) -> int:
...
Teste: dias_uteis(datetime(2026, 8, 1), datetime(2026, 8, 31)) → deve retornar 21 (agosto de 2026 tem 21 dias úteis).
Dica: itere dia a dia com timedelta(days=1) e use date.weekday() (0=segunda, 6=domingo).
from datetime import datetime, timedelta
def dias_uteis(inicio: datetime, fim: datetime) -> int:
total = 0
atual = inicio
while atual <= fim:
if atual.weekday() < 5: # 0-4 = seg-sex
total += 1
atual += timedelta(days=1)
return total
print(dias_uteis(datetime(2026, 8, 1), datetime(2026, 8, 31))) # 21
💡 Dica extra: para intervalos gigantes, dá pra calcular sem loop com fórmula, mas o loop com timedelta é claro e suficiente até ~milhões de dias.
HB Estudos · ← Voltar ao índice de Python