Dominando o strptime() do Python para Análise Precisa de Datas
Python strptime(): Convertendo Strings em Objetos Datetime
Este guia mostra como criar objetos datetime a partir de strings usando o método datetime.strptime() do Python, com exemplos práticos e referência completa de códigos de formato.
Vídeo: Datas e Horas em Python
Assista ao tutorial oficial do Python para aprofundar seu entendimento sobre manipulação de datetime.
O método strptime() cria um objeto datetime a partir de uma string que segue um formato especificado.
Nota: Nem toda string pode ser analisada; a entrada deve corresponder exatamente ao código de formato.
Exemplo 1: Convertendo uma String de Data Simples
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("tipo de date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("tipo de date_object =", type(date_object))
Ao executar o programa, a saída será:
date_string = 21 June, 2018 tipo de date_string = <class 'str'> date_object = 2018-06-21 00:00:00 tipo de date_object = <class 'datetime.datetime'>
Como o strptime() funciona
O método de classe strptime() aceita dois argumentos:
- A string a ser analisada.
- O código de formato que descreve o layout da string.
Com base nessas entradas, o método retorna um objeto datetime que representa o mesmo momento no tempo.
No exemplo acima, o código de formato %d %B, %Y significa:
%d– dia do mês com zero à esquerda (01‑31).%B– nome completo do mês (Janeiro‑Dezembro).%Y– ano com quatro dígitos.
Exemplo 2: Analisando Datas Ambíguas
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# Assumindo formato dia/mês/ano
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Assumindo formato mês/dia/ano
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
O programa produz:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Lista Completa de Códigos de Formato
A tabela abaixo resume todas as diretivas que você pode usar com strptime(). Para documentação completa, consulte o guia oficial do módulo datetime do Python.
| Diretiva | Significado | Exemplo |
|---|---|---|
%a | Nome abreviado do dia da semana. | Dom, Seg, ... |
%A | Nome completo do dia da semana. | Domingo, Segunda-feira, ... |
%w | Dia da semana como número decimal. | 0, 1, ..., 6 |
%d | Dia do mês (com zero à esquerda). | 01, 02, ..., 31 |
%-d | Dia do mês (sem preenchimento). | 1, 2, ..., 30 |
%b | Nome abreviado do mês. | Jan, Fev, ..., Dez |
%B | Nome completo do mês. | Janeiro, Fevereiro, ... |
%m | Número do mês (com zero à esquerda). | 01, 02, ..., 12 |
%-m | Número do mês (sem preenchimento). | 1, 2, ..., 12 |
%y | Ano sem século (com zero à esquerda). | 00, 01, ..., 99 |
%-y | Ano sem século (sem preenchimento). | 0, 1, ..., 99 |
%Y | Ano com século. | 2013, 2019, ... |
%H | Hora (relógio 24h, com zero à esquerda). | 00, 01, ..., 23 |
%-H | Hora (relógio 24h, sem preenchimento). | 0, 1, ..., 23 |
%I | Hora (relógio 12h, com zero à esquerda). | 01, 02, ..., 12 |
%-I | Hora (relógio 12h, sem preenchimento). | 1, 2, ..., 12 |
%p | AM ou PM do locale. | AM, PM |
%M | Minuto (com zero à esquerda). | 00, 01, ..., 59 |
%-M | Minuto (sem preenchimento). | 0, 1, ..., 59 |
%S | Segundo (com zero à esquerda). | 00, 01, ..., 59 |
%-S | Segundo (sem preenchimento). | 0, 1, ..., 59 |
%f | Microssegundo (com zero à esquerda). | 000000 – 999999 |
%z | Deslocamento UTC (+HHMM ou –HHMM). | |
%Z | Nome do fuso horário. | |
%j | Dia do ano (com zero à esquerda). | 001, 002, ..., 366 |
%-j | Dia do ano (sem preenchimento). | 1, 2, ..., 366 |
%U | Número da semana (Domingo primeiro). | 00, 01, ..., 53 |
%W | Número da semana (Segunda-feira primeiro). | 00, 01, ..., 53 |
%c | Data e hora do locale. | Mon Sep 30 07:06:05 2013 |
%x | Data do locale. | 09/30/13 |
%X | Hora do locale. | 07:06:05 |
%% | Um sinal de porcentagem literal. | % |
Erro Comum: ValueError
Se a string e o código de formato não corresponderem, strptime() lança um ValueError. Por exemplo:
from datetime import datetime
date_string = "12/11/2018"
# Formato incorreto – espera dia mês ano
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
Executar este código produz:
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Leitura Recomendada: Python strftime()
python
- Palavras-chave e Identificadores em Python: Dominando Palavras Reservadas e Convenções de Nomenclatura
- Dominando Tipos de Dados em Python: Guia Prático
- Dominando Operadores em Python: Guia Completo
- Dominando a Declaração Pass em Python: Guia Prático
- Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
- Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
- Dominando Iteradores em Python: Como Funcionam e Como Criar os Seus
- Closures em Python Explicados: Como Funções Aninhadas Capturam Variáveis
- Expressões Regulares em Python (Módulo re) – Guia Prático
- Dominando datetime do Python: Guia Prático de Datas, Horários e Fusos Horários