Python oferece ferramentas poderosas para trabalhar com datas e horas. Muitas vezes, será necessário converter strings de data e hora em objetos datetime
para facilitar a manipulação e análise. Este artigo explora diferentes métodos para alcançar essa conversão, focando em flexibilidade e tratamento de erros.
Sumário
- Usando
datetime.strptime()
- Métodos Alternativos de Conversão
- Tratamento Robusto de Erros
- Lidando com Diversos Formatos de Data e Hora
Usando datetime.strptime()
A função datetime.strptime()
é uma escolha comum para conversão de string para datetime
. Ela recebe dois argumentos:
date_string
: A string contendo as informações de data e/ou hora.format
: Uma string de formato especificando como a data e a hora são representadas emdate_string
.
A string de formato usa diretivas para representar diferentes partes da data e da hora. Aqui estão algumas diretivas importantes:
Diretiva | Significado | Exemplo |
---|---|---|
%Y |
Ano com século | 2024 |
%y |
Ano sem século | 24 |
%m |
Mês (01-12) | 03 |
%d |
Dia do mês (01-31) | 15 |
%H |
Hora (relógio de 24 horas, 00-23) | 14 |
%I |
Hora (relógio de 12 horas, 01-12) | 02 |
%p |
AM/PM | PM |
%M |
Minuto (00-59) | 30 |
%S |
Segundo (00-59) | 00 |
%f |
Microssegundo (000000-999999) | 123456 |
%A |
Nome do dia da semana (completo) | Segunda-feira |
%a |
Nome do dia da semana (abreviado) | Seg |
%B |
Nome do mês (completo) | Março |
%b |
Nome do mês (abreviado) | Mar |
A ordem das diretivas na string de formato deve corresponder à ordem na string de data.
from datetime import datetime
date_string = "2024-03-15 14:30:00"
format = "%Y-%m-%d %H:%M:%S"
datetime_object = datetime.strptime(date_string, format)
print(datetime_object) # Saída: 2024-03-15 14:30:00
Métodos Alternativos de Conversão
Para formatos de data mais complexos ou menos padrão, considere usar bibliotecas como dateutil
:
from dateutil import parser
date_string = "15 de março de 2024 14:30"
datetime_object = parser.parse(date_string)
print(datetime_object)
Tratamento Robusto de Erros
Sempre envolva strptime
em um bloco try-except
para lidar com possíveis exceções ValueError
:
try:
datetime_object = datetime.strptime(date_string, format)
except ValueError as e:
print(f"Erro convertendo a string de data: {e}")
Lidando com Diversos Formatos de Data e Hora
Para formatos de entrada variados, você pode precisar pré-processar a string ou usar expressões regulares para extrair os componentes da data antes de aplicar strptime
ou dateutil.parser
.