Python Datetime: trabalhando com datas e horas

Aprenda como lidar com datas, horas, fusos horários e cálculos em Python. Domine a formatação, análise e aritmética usando datetime e timedelta.

Experimente no Editor

Visão geral

Lidar com datas e horas é um desafio notório no desenvolvimento de software, devido aos anos bissextos, aos ajustes de horário de verão e aos diferentes formatos de fuso horário. Python resolve esses desafios com seu módulo `datetime` integrado. Este módulo fornece um conjunto robusto de classes de objetos — como `date`, `time`, `datetime` e `timezone` — que representam e manipulam dados temporais de forma limpa, simplificando os cálculos de datas.

Uma das tarefas mais comuns é converter datas em strings (formatação) e strings em datas (análise). Python usa dois métodos principais para isso: `.strftime()` (formato de string hora) converte um objeto datetime em uma string legível usando códigos de formatação (como `%Y` para ano, `%m` para mês e `%d` para dia). Por outro lado, `datetime.strptime()` (tempo de análise de string) analisa uma entrada de string bruta em um objeto datetime com base em um modelo de formato correspondente, o que é vital ao ler logs ou entradas de API.

A execução de cálculos de datas também é totalmente suportada usando o objeto `timedelta`. Um `timedelta` representa uma duração de tempo (por exemplo, 7 dias, 4 horas). Você pode adicionar ou subtrair um `timedelta` de um `datetime` para calcular datas passadas ou futuras (como determinar uma data de expiração). Ao trabalhar com vários fusos horários, o uso de objetos com reconhecimento de fuso horário (como `zoneinfo` ou `timezone.utc`) é fundamental para garantir que as comparações de datas permaneçam precisas em diferentes locais de servidor.

Saída de código e execução

Analisando strings em objetos datetime e calculando prazos futuros usando timedelta.

datetime_demo.py
Experimente no Editor
from datetime import datetime, timedelta

# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")

# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")

# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")

# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")
Saída terminal
Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04

Implementação passo a passo

  • Cálculo da expiração do teste e datas de cobrança
  • Analisando strings de carimbo de data/hora nos logs de acesso do servidor
  • Agendamento de cron jobs automatizados ou relatórios recorrentes

Perguntas frequentes

O que é um objeto datetime ingênuo versus consciente?

Um objeto datetime ingênuo não contém informações de fuso horário, enquanto um objeto datetime consciente inclui compensações de fuso horário, tornando-o seguro para cálculos de horário internacional.

Como calculo a diferença entre duas datas?

Subtrair um objeto datetime de outro retorna um objeto timedelta que representa a duração exata entre eles.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.