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
últimas postagens
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ã”).