Como converter String para Datetime em Python

A conversão de um tipo de dados para outro tipo de dados é crucial em qualquer linguagem de programação. Quase todas as linguagens de programação oferecem suporte a conversões de tipo para tipos de dados integrados.

Tipos de dados personalizados como datetime precisam de módulos extras para conversões. Precisamos de módulos, especialmente para conversões de data e hora, pois trabalhar com eles nunca foi fácil para os programadores. Felizmente, o python possui módulos integrados para trabalhar com datetime.

Aprenderemos como converter uma string datetime em um objeto datetime em Python usando diferentes módulos. Antes de entrarmos nisso, vamos ver por que precisamos convertê-lo em primeiro lugar.

Por que precisamos converter uma string de data e hora em um objeto de data e hora?

Quando temos que trabalhar com datas, não é fácil trabalhar se estiverem no formato string. Convertê-los para o formato de data e hora facilita muito o trabalho com eles. Datas em strings são como strings normais. Não terá nenhum método especial para trabalhar com datas. Ele terá métodos de string gerais, dos quais não precisaremos ao trabalhar com datas.

Digamos que temos que comparar duas datas. Se estiverem no formato string, podemos compará-los corretamente. Se estiverem no formato de data e hora, podemos usar os operadores de comparação como números.

Este é apenas um cenário em que a conversão para o formato de data e hora facilita as coisas. Existem muitos cenários, como adicionar datas, subtrair, lidar com fusos horários, etc., onde converter string de data e hora em objeto de data e hora torna nossas vidas mais fáceis do que nunca.

  Como excluir uma lista de reprodução no Spotify

Com isso dito, vamos ver diferentes maneiras de converter uma string de data e hora em um objeto de data e hora. Usaremos módulos integrados datetime e dateutil de terceiros para converter a string datetime em objeto datetime. Vamos começar com o módulo datetime

Usando data e hora

O datetime é um módulo embutido do Python que é usado para trabalhar com datas e horas. Há muitas aulas neste módulo que nos ajudam a trabalhar com datas e horas. Estaremos usando a classe datetime.datetime para a conversão.

O datetime.datetime tem muitos métodos. Estamos interessados ​​no método strptime que nos ajudará na conversão. Vamos verificar.

datetime.strptime

O método datetime.strptime é usado para converter a string datetime em um objeto datetime. São necessárias duas strings, uma é a string de data e hora e a outra é o formato dessa string de data e hora. E retorna o objeto datetime.

Vamos ver um exemplo

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

Se você executar o código acima, verá a seguinte saída.

2022-12-19 21:37:56

Pegamos uma string de data e hora e a convertemos em um objeto de data e hora usando o método datetime.strptime. Certifique-se de que o formato que você está fornecendo ao método corresponda exatamente à string de data e hora. Se eles não corresponderem, você poderá receber um erro ou uma saída incorreta.

Usamos alguns códigos de formatação para o formato de data e hora. Você pode consultar todos os códigos de formato nos documentos.

O método datetime.strptime retorna datetime completo. Se você deseja obter a data e a hora separadamente, podemos usar os métodos de data e hora do objeto datetime. Vamos ver o código.

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"

## getting date separately
print("Date:", datetime.strptime(string, formatting).date())

## getting time separately
print("Time:", datetime.strptime(string, formatting).time())

Execute o código acima e você verá a seguinte saída.

Date: 2022-12-19
Time: 21:37:56

Os métodos date e time retornarão seus objetos respectivamente. Eles terão novamente seus respectivos métodos para datas e horários.

  Existe um Mastercard JCPenney?

Fornecemos as strings e formatos corretos para o método datetime.strptime que vimos acima. Se não os fornecermos corretamente, obteremos erros. Vamos ver como lidar com esses erros. Execute o seguinte código.

from datetime import datetime

string = "19:12:2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

O código acima gerará um erro porque a formatação não corresponde à string de data e hora. Para lidar com esses tipos de erros, podemos usar o try-except do Python. Vamos adicioná-lo.

from datetime import datetime

try:
    string = "19:12:2022 09:37:56 PM"
    formatting = "%d-%m-%Y %I:%M:%S %p"
    print(datetime.strptime(string, formatting))
except ValueError as error:
    print(error)

Agora, execute o código novamente. Você verá a seguinte mensagem de erro sem quebrar o código.

time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'

Da mesma forma, podemos adicionar try-except para o próximo método parser.parse. Isso nos ajuda a evitar quebrar o código no meio. Isso não está especialmente relacionado ao contexto deste tutorial, mas irá lembrá-lo de usá-lo em seu código.

Isso é tudo para o módulo datetime. Vamos para o próximo módulo dateutil.

Usando dateutil

O módulo dateutil fornece extensões para o módulo datetime. Facilita muito o trabalho com datas e horas com muitos métodos de fácil uso. Vamos instalar o módulo com o seguinte comando.

pip install python-dateutil

O método que nos interessa é dateutil.parser.parse. Vamos ver como converter uma string de data e hora em um objeto de data e hora.

  Plataforma de nuvem verdadeiramente global de alto desempenho e fácil de usar

parser.parse

O método parser.parse pegará uma string de data e hora e a converterá em um respectivo formato de objeto de data e hora. Não precisamos fornecer nenhuma formatação para esse método. Ele converterá automaticamente a string de data e hora fornecida em um objeto de data e hora. Vejamos um exemplo.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print(parser.parse(string))

Se você executar o código acima, verá a seguinte saída.

2022-12-19 21:37:56

A sequência de data e hora deve estar em um formato específico aceito pelo método parser.parse. Ele lançará um erro se o formato da string de data e hora não estiver de acordo com o formato desejado. Você pode verificar todos os formatos de sequência de data e hora que ele aceita para conversões automáticas.

Como o método parser.parse retorna o objeto datetime, podemos acessar os objetos date e time separadamente como vimos com o módulo datetime. Vamos ver o código.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print("Date:", parser.parse(string).date())
print("Time:", parser.parse(string).time())

Você pode ver a saída abaixo se executar o código acima.

Date: 2022-12-19
Time: 21:37:56

Como você pode ver, o dateutil torna mais fácil trabalhar comparativamente com as datas e horas. Você pode explorar o módulo nos documentos.

Conclusão

Usamos um módulo interno e um módulo de terceiros para converter a string de data e hora em um objeto DateTime. Há outro módulo embutido chamado time com o qual podemos converter a string datetime em um objeto DateTime semelhante aos módulos datetime e dateutil. Tente você mesmo. Não será difícil, pois você já fez algo semelhante com outros módulos.

Pode haver mais bibliotecas com as quais podemos conseguir a mesma coisa. Os módulos que usamos no tutorial de coisas são padrão e amplamente utilizados. Você pode explorar mais sobre outros módulos e escolher o que melhor se adapta a você.

Você também pode explorar como calcular a diferença de tempo em python.

Codificação feliz 🙂