Python String to DateTime: conversão e utilização
Os objetos DateTime servem para realizar facilmente cálculos de tempo, como somar ou subtrair intervalos de tempo. A conversão de cadeias em objetos DateTime é fundamental para estruturar, analisar e representar com precisão informações de tempo ao programar em Python.
Como funciona a conversão de uma string Python para DateTime
Converter uma string Python para DateTime é um processo no qual cadeias de texto que contêm uma data ou hora são convertidas num objeto DateTime, ou seja, uma estrutura de dados para representar e manipular informações de data e hora. A conversão de uma string para DateTime pode ser necessária se você trabalha em Python com dados de data e hora que aparecem como cadeias de caracteres.
Assim, as informações são convertidas para um formato utilizável para realizar cálculos, comparações de datas ou formatar informações de horas, por exemplo. Os métodos do formato de string do Python para concatenar expressões também podem ser úteis ao trabalhar com objetos DateTime.
Converter cadeias em objetos DateTime
A conversão de strings em objetos DateTime abrange diferentes funções e módulos, como a biblioteca datetime e o método strptime().
Utilização de strptime()
O método strptime() da biblioteca datetime é utilizado para converter uma cadeia de caracteres num objeto Python DateTime. Necessita de dois argumentos: a cadeia de caracteres a ser analisada e o formato de data ou hora da cadeia.
datetime.strptime(date_string, format)pythondatetime.datetime()
Com o método strptime(), é possível converter uma cadeia de texto num objeto datetime.datetime, tendo em conta um formato específico de data e hora.
from datetime import datetime
date_string = '2023-10-30 12:00:00'
date_object = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print(date_object) # Output: 2023-10-30 12:00:00pythonNeste exemplo, a cadeia date_string é especificada como '2023-10-30 12:00:00' e o formato '%Y-%m-%d %H:%M:%S' define a ordem e a aparência da data e da hora na cadeia. O método strptime() analisa a cadeia de acordo com este formato e cria a partir dela um objeto datetime.datetime, que é depois guardado na variável date_object.
A seguir, explicamos o que significa o formato '%Y-%m-%d %H:%M:%S':
%Y: quatro dígitos do ano;%m: dois dígitos do mês;%d: dois dígitos do dia;%H: hora (formato de 24 horas);%M: minuto;%S: segundos.
datetime.time()
Ao converter cadeias num objeto datetime.time, é possível representar horas sem data. Isto pode ser feito através do método strptime() da classe datetime ou dividindo uma cadeia de tempo em horas, minutos e segundos.
from datetime import datetime
time_string = '14::30::00'
time_object = datetime.strptime(time_string, '%H::%M::%S').time()
print(time_object) # Output: 14:30:00python'%H:%M:%S' refere-se ao formato de horas, minutos e segundos. O método strptime() interpreta a cadeia de horas de acordo com este formato e cria um objeto datetime.time.
datetime.date()
Você também pode converter uma string em um objeto datetime.date usando o método strptime() da classe datetime ou dividindo manualmente a string da data em ano, mês e dia.
from datetime import datetime
date_string = '2023-11-30'
date_object = datetime.strptime(date_string, '%Y-%m-%d').date()
print(date_object) # Output: 2023-11-30pythonNo exemplo anterior, '%Y-%m-%d' refere-se ao formato de ano, mês e dia. O método strptime() analisa a cadeia de data e cria um objeto datetime.date.
Resolução de erros relacionados com strptime()
Ao utilizar o método strptime() para converter uma string Python em DateTime, podem ocorrer erros, especialmente se o formato especificado não corresponder ao formato da string de entrada. Veja alguns dos erros mais comuns e descubra como resolvê-los:
ValueError: time data '...' does not match format '...'. Este erro aparece quando a cadeia de entrada não coincide com o formato especificado. Neste caso, deve certificar-se de que está a utilizar o padrão de formato correto emstrptime().ValueError: unconverted data remains. Este erro aparece quando há dados não representados após tentar converter a cadeia. Verifique o padrão de formato para garantir que corresponde exatamente à estrutura da cadeia de entrada.TypeError: strptime() argument 1 must be str, not .... Este erro ocorre quando o parâmetro passado parastrptime()não é uma cadeia. Verifique se o argumento que está a passar é uma cadeia que contém o formato de data ou hora.
Deve certificar-se de que o padrão de formato interpreta corretamente todas as partes da cadeia de entrada (ano, mês, dia, hora, etc.). Pode haver diferenças nos separadores, no uso de maiúsculas ou minúsculas e outros detalhes entre o padrão de formato e a cadeia de entrada.