Como analisar uma string para uma data e hora em Python (strptime)

Aprenda como converter strings em objetos datetime em Python. Domine o método strptime, analise strings de data, lide com fusos horários e evite erros de formatação.

Experimente esta solução no Editor

Visão geral

Ao criar aplicativos que processam envios de formulários de usuários, coletam bancos de dados da web, analisam logs de servidores ou importam planilhas CSV, você frequentemente receberá informações de data e hora como strings de texto bruto (por exemplo, `"2026-05-25 15:45"`). Como você não pode realizar cálculos, aritmética de datas ou classificação de strings, você deve analisá-los em objetos de data e hora do Python.

O método principal para esta conversão é `datetime.strptime(date_string, format_string)`. O nome significa "tempo de análise de string". A função pega a string de data bruta e um modelo de formato contendo diretivas (como `%Y` para ano, `%m` para mês e `%d` para dia) e retorna um objeto de data e hora correspondente.

Se a string de entrada não corresponder exatamente ao modelo de formato fornecido, o Python gerará um `ValueError`. Para evitar travamentos, sempre envolva as operações `strptime()` em um bloco `try-except`. Para aplicativos que analisam entradas de datas diversas e não estruturadas, bibliotecas externas como `python-dateutil` podem ajudar a automatizar a detecção do analisador.

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

Este script demonstra a análise de sequências de datas usando datetime.strptime, o tratamento de entradas inválidas e o cálculo de diferenças de datas.

parse_datetime.py
Experimente no Editor
from datetime import datetime

# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"

parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)

# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
    datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
    print(f"\nParse Error: {e}")

# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())
Saída terminal
Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18

Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25

Implementação passo a passo

  • Importe a classe datetime do módulo datetime.
  • Identifique a estrutura exata da sua sequência de datas (por exemplo, dia, mês, separadores).
  • Chame datetime.strptime(date_string, format_pattern) com diretivas apropriadas (como %Y, %m, %d).
  • Envolva a instrução de análise em um bloco try-except ValueError para lidar com strings malformadas normalmente.

Perguntas frequentes

Qual é a diferença entre strftime e strptime?

strptime (tempo de análise de string) analisa uma string para criar um objeto datetime. strftime (formato de string time) formata um objeto datetime em uma representação de string legível.

Como analiso strings de data ISO 8601 (por exemplo, "2026-05-25T18:30:00Z")?

EmPython 3.7+, você pode usar a função integrada datetime.fromisoformat(string), que lida com strings ISO de forma eficiente sem exigir um modelo de formato manual.

Tópicos Relacionados

Recursos Python recomendados

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