Os objetos DateTime servem para realizar fa­cil­mente cálculos de tempo, como somar ou subtrair in­ter­va­los de tempo. A conversão de cadeias em objetos DateTime é fun­da­men­tal para es­tru­tu­rar, analisar e re­pre­sen­tar com precisão in­for­ma­çõ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 con­ver­ti­das num objeto DateTime, ou seja, uma estrutura de dados para re­pre­sen­tar e manipular in­for­ma­ções de data e hora. A conversão de uma string para DateTime pode ser ne­ces­sá­ria se você trabalha em Python com dados de data e hora que aparecem como cadeias de ca­rac­te­res.

Assim, as in­for­ma­ções são con­ver­ti­das para um formato uti­li­zá­vel para realizar cálculos, com­pa­ra­ções de datas ou formatar in­for­ma­ções de horas, por exemplo. Os métodos do formato de string do Python para con­ca­te­nar ex­pres­sõ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 di­fe­ren­tes funções e módulos, como a bi­bli­o­teca datetime e o método strptime().

Uti­li­za­ção de strptime()

O método strptime() da bi­bli­o­teca datetime é utilizado para converter uma cadeia de ca­rac­te­res num objeto Python DateTime. Necessita de dois ar­gu­men­tos: a cadeia de ca­rac­te­res a ser analisada e o formato de data ou hora da cadeia.

datetime.strptime(date_string, format)
python

datetime.datetime()

Com o método strptime(), é possível converter uma cadeia de texto num objeto datetime.datetime, tendo em conta um formato es­pe­cí­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:00
python

Neste exemplo, a cadeia date_string é es­pe­ci­fi­cada 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, ex­pli­ca­mos 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 re­pre­sen­tar 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:00
python

'%H:%M:%S' refere-se ao formato de horas, minutos e segundos. O método strptime() in­ter­preta 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 ma­nu­al­mente 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-30
python

No 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 re­la­ci­o­na­dos com strptime()

Ao utilizar o método strptime() para converter uma string Python em DateTime, podem ocorrer erros, es­pe­ci­al­mente se o formato es­pe­ci­fi­cado não cor­res­pon­der 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 es­pe­ci­fi­cado. Neste caso, deve cer­ti­fi­car-se de que está a utilizar o padrão de formato correto em strptime().
  • ValueError: unconverted data remains. Este erro aparece quando há dados não re­pre­sen­ta­dos após tentar converter a cadeia. Verifique o padrão de formato para garantir que cor­res­ponde exa­ta­mente à estrutura da cadeia de entrada.
  • TypeError: strptime() argument 1 must be str, not .... Este erro ocorre quando o parâmetro passado para strptime() não é uma cadeia. Verifique se o argumento que está a passar é uma cadeia que contém o formato de data ou hora.

Deve cer­ti­fi­car-se de que o padrão de formato in­ter­preta cor­re­ta­mente todas as partes da cadeia de entrada (ano, mês, dia, hora, etc.). Pode haver di­fe­ren­ças nos se­pa­ra­do­res, no uso de maiús­cu­las ou mi­nús­cu­las e outros detalhes entre o padrão de formato e a cadeia de entrada.

Ir para o menu principal