9.1 Trabalhando com Data e Hora
Devs frequentemente precisam lidar com datas e horários em
seus programas. Então, não é surpresa que em Python, você tem
duas bibliotecas padrão para esses casos:
datetime
e time
.
A biblioteca datetime
faz parte da biblioteca padrão do
Python e oferece classes para trabalhar com datas e horas.
Ela permite criar, manipular e formatar datas e horas, além de
realizar operações aritméticas com elas.
Principais classes da biblioteca datetime
Classe datetime.date
Esta classe representa uma data (ano, mês, dia) sem horário. É útil para trabalhar com datas de calendário.
Exemplo de uso:
import datetime
# Criando um objeto de data
d = datetime.date(2023, 5, 24)
print(d) # Saída: 2023-05-24
# Obtendo a data atual
today = datetime.date.today()
print(today)
# Acessando os atributos de ano, mês e dia
print(d.year) # Saída: 2023
print(d.month) # Saída: 5
print(d.day) # Saída: 24
Classe datetime.time
Esta classe representa o tempo (horas, minutos, segundos, microssegundos) sem data. É útil para trabalhar com horários do dia.
Exemplo de uso:
import datetime
# Criando um objeto de tempo
t = datetime.time(14, 30, 45)
print(t) # Saída: 14:30:45
# Acessando os atributos de horas, minutos e segundos
print(t.hour) # Saída: 14
print(t.minute) # Saída: 30
print(t.second) # Saída: 45
Classe datetime.datetime
Esta classe combina data e hora (ano, mês, dia, horas, minutos, segundos, microssegundos). É útil para trabalhar com momentos específicos no tempo.
Exemplo de uso:
import datetime
# Criando um objeto de data e tempo
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # Saída: 2023-05-24 14:30:45
# Obtendo a data e o tempo atuais
now = datetime.datetime.now()
print(now)
# Acessando os atributos de data e tempo
print(dt.year) # Saída: 2023
print(dt.month) # Saída: 5
print(dt.day) # Saída: 24
print(dt.hour) # Saída: 14
print(dt.minute) # Saída: 30
print(dt.second) # Saída: 45
Classe datetime.timedelta
Esta classe representa a diferença entre dois momentos no tempo, expressa em dias, segundos e microssegundos. É útil para realizar operações aritméticas com datas e horas.
Exemplo de uso:
import datetime
# Criando um objeto timedelta
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # Saída: 10 days, 5:30:00
# Adicionando timedelta a uma data
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # Saída: 2023-06-03 20:00:00
# Subtraindo timedelta de uma data
earlier_dt = dt - delta
print(earlier_dt) # Saída: 2023-05-14 09:00:00
4.2 Formatação e Análise de Datas e Horários
Muitas vezes precisamos não só trabalhar com uma data, mas transformá-la em uma string de um certo formato. O processo inverso, quando transformamos uma string em um objeto, é geralmente chamado de análise. Para essas operações, o Python também fornece classes e métodos próprios:
Método strftime()
O método strftime()
é usado para formatar objetos datetime
em uma string de acordo com um formato especificado.
Exemplo de uso:
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# Formatação de data e hora
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # Saída: 2023-05-24 14:30:45
# Formatação apenas de data
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # Saída: 24-05-2023
# Formatação apenas de tempo
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # Saída: 14:30:45
Método strptime()
Método strptime()
é usado para analisar strings em objetos datetime
de acordo com um formato especificado.
Exemplo de uso:
import datetime
# Análise de string em objeto datetime
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # Saída: 2023-05-24 14:30:45
# Análise de string em objeto date
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # Saída: 2023-05-24
# Análise de string em objeto time
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # Saída: 14:30:45
4.3 Trabalhando com Fusos Horários
Na prática, nossos serviços são utilizados por pessoas ao redor do mundo, e, infelizmente, elas vivem em países diferentes e têm diferentes fusos horários (timezone
). Portanto, como programador, você também precisa saber como lidar com eles.
E claro, em Python há uma classe para isso também:
Classe timezone
A classe timezone
do módulo datetime
permite trabalhar com fusos horários.
import datetime
# Criando um objeto datetime com fuso horário UTC
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # Saída: 2023-05-24 14:30:45+00:00
# Convertendo para outro fuso horário
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # Saída: 2023-05-24 23:30:45+09:00
Discutimos a biblioteca datetime
de maneira bem geral, diria até superficialmente. No futuro, vamos voltar a ela e aprender a usá-la para tarefas mais específicas. Por enquanto, queria apenas que você se familiarizasse com ela e ampliasse, por assim dizer, sua visão sobre o conjunto de bibliotecas padrão.
Sobre qualquer biblioteca, você deve primeiro saber que ela existe e imaginar o que pode fazer com ela. A lista de funções, seus parâmetros e todas as suas possibilidades sempre podem ser encontrados na documentação oficial.
GO TO FULL VERSION