Como converter uma string em um objeto datetime ou time em Python

Como converter uma string em um objeto datetime ou time em Python

Introdução

Em Python, trabalhar com datas e horários é fundamental para diversas aplicações, desde análise de dados até agendamento de tarefas. Para lidar com essas informações, Python fornece os tipos de dados datetime e time, que permitem representar e manipular datas e horários de forma conveniente.

Entretanto, muitas vezes precisamos converter strings representando datas e horários em objetos datetime ou time para usá-las em nossos programas. Este artigo fornecerá um guia abrangente sobre como realizar essa conversão com eficiência em Python.

Conversão em objetos datetime

Usando o método strptime()

O método strptime() do módulo datetime é uma ferramenta poderosa para converter strings de data e hora em objetos datetime. Ele recebe dois argumentos: a string a ser convertida e um formato de data especificado. O formato da data deve ser uma string formatada de acordo com as diretrizes de formatação de data da linguagem C.

python
from datetime import datetime

String de data e hora

data = "2023-03-08 14:30:00"

Formato de data

formato_data = "%Y-%m-%d %H:%M:%S"

Conversão para objeto datetime

data_objeto = datetime.strptime(data, formato_data)

Exibir o objeto datetime convertido

print(data_objeto)

Saída: 2023-03-08 14:30:00

Usando o construtor datetime()

Em alguns casos, você pode converter uma string de data e hora diretamente em um objeto datetime usando o construtor datetime(). No entanto, este método só é recomendado para strings que estejam no formato padrão AAAA-MM-DD HH:MM:SS.

python
from datetime import datetime

String de data e hora

data = "2023-03-08 14:30:00"

Conversão para objeto datetime

data_objeto = datetime(data)

Exibir o objeto datetime convertido

print(data_objeto)

Saída: 2023-03-08 14:30:00

Conversão em objetos time

Usando o método strptime()

Assim como para objetos datetime, podemos usar o método strptime() para converter strings de hora em objetos time. O formato de hora deve ser uma string formatada de acordo com as diretrizes de formatação de horário da linguagem C.

python
from datetime import time

String de hora

hora = "14:30:00"

Formato de hora

formato_hora = "%H:%M:%S"

Conversão para objeto time

hora_objeto = time.strptime(hora, formato_hora)

Exibir o objeto time convertido

print(hora_objeto)

Saída: time(14, 30, 0)

Usando o construtor time()

Semelhante à conversão de strings de data, podemos usar o construtor time() para converter strings de hora diretamente em objetos time. Este método também só é recomendado para strings que estejam no formato padrão HH:MM:SS.

python
from datetime import time

String de hora

hora = "14:30:00"

Conversão para objeto time

hora_objeto = time(hora)

Exibir o objeto time convertido

print(hora_objeto)

Saída: 14:30:00

Casos especiais de conversão

Datas e horários relativos

Quando você precisa converter uma string representando uma data ou horário relativo (por exemplo, “hoje” ou “amanhã”), você pode usar a biblioteca dateutil. Esta biblioteca fornece funções convenientes para lidar com datas e horários relativos.

python
from dateutil import relativedelta

String de data relativa

data_relativa = "hoje + 2 dias"

Conversão para objeto datetime

data_objeto = datetime.today() + relativedelta(days=2)

Exibir o objeto datetime convertido

print(data_objeto)

Saída: 2023-03-10 00:00:00

Datas e horários com fuso horário

Se você estiver lidando com datas e horários com fuso horário, é importante usar a biblioteca pytz. Esta biblioteca fornece objetos de fuso horário que permitem converter e manipular datas e horários em diferentes fusos horários.

python
import pytz

String de data e hora com fuso horário

data = "2023-03-08 14:30:00 PST"

Fuso horário de destino

fuso_horario = pytz.timezone("America/Los_Angeles")

Conversão para objeto datetime com fuso horário

data_objeto = datetime.strptime(data, "%Y-%m-%d %H:%M:%S %Z", fuso_horario)

Exibir o objeto datetime convertido

print(data_objeto)

Saída: 2023-03-08 14:30:00-08:00

Conclusão

Converter strings em objetos datetime ou time em Python é uma tarefa essencial para trabalhar com datas e horários. Este artigo forneceu um guia abrangente sobre as diferentes maneiras de realizar essa conversão com eficiência, dependendo do formato das strings de entrada e dos requisitos específicos da sua aplicação.

Ao usar as técnicas e bibliotecas descritas neste artigo, você pode converter facilmente strings representando datas e horários em objetos datetime ou time, permitindo que você manipule e exiba essas informações com precisão e flexibilidade em seus programas Python.

FAQs

1. Qual é a diferença entre objetos datetime e time?
Objetos datetime representam datas e horários completos, enquanto objetos time representam apenas a hora do dia (sem a data).

2. Como faço para obter o ano, mês e dia de um objeto datetime?
Você pode usar os atributos year, month e day para obter essas informações.

3. Como faço para adicionar ou subtrair dias de um objeto datetime?
Você pode usar o método timedelta() para adicionar ou subtrair um intervalo de tempo de um objeto datetime.

4. Como faço para formatar um objeto datetime ou time como uma string?
Você pode usar o método strftime() para formatar um objeto datetime ou time de acordo com um formato de string especificado.

5. Como faço para converter um objeto datetime em um carimbo de data/hora do Unix?
Você pode usar o método timestamp() para converter um objeto datetime em um carimbo de data/hora do Unix.

6. Como faço para converter um carimbo de data/hora do Unix em um objeto datetime?
Você pode usar o método fromtimestamp() para converter um carimbo de data/hora do Unix em um objeto datetime.

7. Como faço para comparar dois objetos datetime?
Você pode usar os operadores de comparação (==, !=, <, <=, >, >=) para comparar dois objetos datetime.

8. Como faço para verificar se um objeto datetime é válido?
Você pode usar o método isvalid() para verificar se um objeto datetime é válido (ou seja, representa uma data e hora válidas).

9. Como faço para criar um objeto datetime com um determinado fuso horário?
Você pode usar a biblioteca dateutil para criar objetos datetime com fusos horários específicos.

10. Como faço para converter um objeto datetime em uma string representando uma data e hora relativas?
Você pode usar a biblioteca dateutil para converter um objeto datetime em uma string representando uma data e hora relativas (por exemplo, “hoje”, “amanhã”).

  8 Plataforma de hospedagem de servidor dedicado gerenciado confiável para sua empresa