Salve salve Pythonista ![]()
Trabalhar com datas e horários é essencial em muitas aplicações Python.
Entender como manipular datas facilita tarefas como agendamentos, logs e análises temporais.
Neste artigo, abordaremos o módulo datetime do Python, explorando desde operações básicas até manipulações avançadas de datas e horários.
Com este conhecimento, você poderá gerenciar datas de forma eficiente em seus projetos Python.
Vá Direto ao Assunto…
- Introdução ao Módulo
datetime - Trabalhando com Datas e Horas
- Formatando Datas
- Convertendo Datas para Strings
- Convertendo Strings para Datas
- Calculando Diferença entre Datas
- Trabalhando com Timezones
- Trabalhando com
timedelta - Trabalhando com Datas em Diferentes Formatos
- Trabalhando com Datas em Diferentes Idiomas
Introdução ao Módulo datetime
O módulo datetime é a ferramenta padrão do Python para trabalhar com datas e horários.
Ele fornece classes para manipular datas, horários e intervalos de tempo.
Além disso, permite realizar operações como formatação, conversão e cálculo entre diferentes unidades de tempo.
Para começar, é necessário importar o módulo datetime:
1
import datetime
Trabalhando com Datas e Horas
Com o módulo datetime, podemos criar objetos que representam datas e horários específicos.
Vamos criar um objeto que representa a data atual:
1
2
data_atual = datetime.date.today()
print(data_atual)
Explicação do código:
-
Importação: Importamos o módulo
datetime. -
Objeto de Data Atual: Usamos
datetime.date.today()para obter a data de hoje. -
Exibição: Imprimimos a data atual no formato
YYYY-MM-DD.
A saída será:
1
datetime.date(2025, 2, 25)
Criando um Objeto de Horário
Além de datas, podemos criar objetos que representam horários:
1
2
hora_atual = datetime.datetime.now().time()
print(hora_atual)
Explicação do código:
-
Método
now():datetime.datetime.now()retorna a data e hora atuais. -
Extração de Hora: Usamos
.time()para obter apenas o componente de horário. -
Exibição: Imprimimos a hora atual no formato
HH:MM:SS.microsegundos.
A saída será:
1
datetime.time(9, 27, 9, 484035)
Formatando Datas
Formatar datas é útil para exibir informações de maneira legível ou específica.
Usando strftime
A função strftime permite formatar objetos de data e hora:
1
2
3
data_atual = datetime.date.today()
data_formatada = data_atual.strftime("%d/%m/%Y")
print(data_formatada)
Explicação do código:
-
Formato Personalizado:
%drepresenta o dia,%mo mês e%Yo ano. -
Formatação: Convertendo
data_atualpara o formatoDD/MM/AAAA. - Exibição: Imprimimos a data formatada.
E a saída será:
1
25/02/2025
Exemplo de Formatação Completa
1
2
3
hora_atual = datetime.datetime.now().time()
hora_formatada = hora_atual.strftime("%H:%M:%S")
print("Hora:", hora_formatada)
Explicação do código:
-
Formato de Hora:
%Hpara horas,%Mpara minutos e%Spara segundos. -
Formatação: Convertendo
hora_atualpara o formatoHH:MM:SS. - Exibição: Imprimimos a hora formatada.
A saída será:
1
Hora: 09:29:09
Convertendo Datas para Strings
Converter objetos de data para strings é útil para salvar ou exibir informações.
Usando str()
A função str() converte objetos de data para strings em um formato padrão:
1
2
3
data_atual = datetime.date.today()
data_str = str(data_atual)
print(data_str)
Explicação do código:
-
Conversão: Usamos
str(data_atual)para converter o objeto de data em uma string. -
Exibição: Imprimimos a string resultante no formato
YYYY-MM-DD.
Sua saída será:
1
2025-02-25
Convertendo Strings para Datas
Às vezes, precisamos converter strings que representam datas em objetos de data.
Usando strptime
A função strptime permite analisar strings em objetos de data:
1
2
3
data_string = "25/12/2023"
data_convertida = datetime.datetime.strptime(data_string, "%d/%m/%Y").date()
print(data_convertida)
Explicação do código:
-
String de Data: Definimos
data_stringno formatoDD/MM/AAAA. -
Análise: Usamos
strptimepara converter a string em um objetodatetime. -
Extração de Data: Com
.date(), extraímos apenas a data. -
Exibição: Imprimimos a data convertida no formato
YYYY-MM-DD.
A saída será:
1
2023-12-25
Calculando Diferença entre Datas
Calcular a diferença entre datas é útil para determinar durações ou prazos.
Usando timedelta
A classe timedelta representa uma duração ou intervalo de tempo:
1
2
3
data_futura = datetime.date(2050, 1, 1)
diferenca = data_futura - data_atual
print(diferenca.days, "dias restantes")
Explicação do código:
- Data Futura: Criamos uma data específica para o futuro.
-
Cálculo da Diferença: Subtraímos
data_atualdedata_futurapara obter a diferença. - Exibição: Imprimimos o número de dias restantes.
A saída será:
1
9076 dias restantes
Trabalhando com Timezones
Gerenciar fusos horários é crucial para aplicações globais.
Usando pytz
Embora o módulo datetime tenha suporte básico, bibliotecas como pytz oferecem funcionalidades avançadas.
Para isso, instale o pytz utilizando o pip com pip install pytz. Em seguida:
1
2
3
4
5
import pytz
fuso_horario = pytz.timezone("America/Sao_Paulo")
data_hora_local = datetime.datetime.now(fuso_horario)
print(data_hora_local)
Explicação do código:
-
Importação do
pytz: Importamos a bibliotecapytz. - Definição do Fuso Horário: Especificamos o fuso horário desejado.
-
Obtendo Data e Hora Local: Usamos
nowcom o fuso horário definido. - Exibição: Imprimimos a data e hora local com o fuso aplicado.
A saída será:
1
2025-02-25 15:37:28.861810-03:00
A parte final da data -03:00 é o fuso de São Paulo, GMT-3!
Ei, você aí! Quer dominar manipulação de datas em Python? Então conheça a Jornada Python agora e se torne um mestre em Python!
Trabalhando com timedelta
A classe timedelta permite realizar operações com intervalos de tempo.
Adicionando Dias a uma Data
1
2
3
4
5
6
import datetime
data_atual = datetime.date.today()
intervalo = datetime.timedelta(days=10)
nova_data = data_atual + intervalo
print(nova_data)
Explicação do código:
-
Criação do Intervalo: Definimos um intervalo de 10 dias com
datetime.timedelta(days=10). - Adição à Data Atual: Somamos o intervalo à data atual.
- Exibição: Imprimimos a nova data resultante.
A saída esperada é:
1
2025-03-07
Subtraindo Horas de um Horário
1
2
3
4
5
6
intervalo_horas = datetime.timedelta(hours=5)
nova_hora = datetime.datetime.now().time()
print("Hora atual:", nova_hora)
hora_ajustada = (datetime.datetime.combine(datetime.date.today(), nova_hora) - intervalo_horas).time()
print("Hora ajustada:", hora_ajustada)
Explicação do código:
- Criação do Intervalo de Horas: Definimos um intervalo de 5 horas.
- Combinação de Data e Hora: Combinamos a data de hoje com a hora atual.
- Subtração do Intervalo: Subtraímos o intervalo de horas da data e hora combinadas.
- Extração da Hora Ajustada: Obtemos apenas o componente de hora.
- Exibição: Imprimimos a hora antes e após a subtração.
Veja a saída esperada:
1
2
Hora atual: 15:40:58.201792
Hora ajustada: 10:40:58.201792
Trabalhando com Datas em Diferentes Formatos
Datas podem estar em diversos formatos, dependendo da aplicação.
Parsing de Múltiplos Formatos
Podemos criar funções para lidar com múltiplos formatos de data:
1
2
3
4
5
6
7
8
9
10
def parse_data(data_str):
for fmt in ("%d/%m/%Y", "%Y-%m-%d", "%m-%d-%Y"):
try:
return datetime.datetime.strptime(data_str, fmt).date()
except ValueError:
continue
raise ValueError("Formato de data inválido")
data_exemplo = parse_data("12-31-2023")
print(data_exemplo)
Explicação do código:
- Função de Parsing: Tentamos diferentes formatos para analisar a string de data.
- Laço de Tentativas: Iteramos sobre uma lista de formatos possíveis.
- Retorno da Data: Retornamos a data convertida se o formato corresponder.
- Exceção: Lançamos um erro se nenhum formato for válido.
-
Exibição: Imprimimos a data convertida no formato
YYYY-MM-DD.
Trabalhando com Datas em Diferentes Idiomas
Manipular datas em diferentes idiomas melhora a experiência do usuário global.
Usando locale
O módulo locale permite configurar a localização para formatação de datas:
1
2
3
4
5
6
7
8
9
10
import locale
# Seta a categoria do locale "tempo" (Locale Category: Time) para
# - Português do Brasil (pt_BR)
# - Codificação UTF-8
locale.setlocale(locale.LC_TIME, 'pt_BR.UTF-8')
data_atual = datetime.date.today()
data_formatada = data_atual.strftime("%A, %d de %B de %Y")
print(data_formatada)
Explicação do código:
-
Importação do
locale: Importamos o módulolocale. - Configuração da Localização: Definimos a localidade para português brasileiro.
-
Formatação com
locale: Usamosstrftimepara formatar a data com nomes de dias e meses em português. - Exibição: Imprimimos a data formatada, por exemplo, “segunda-feira, 25 de dezembro de 2023”.
A saída será:
1
terça, 25 de fevereiro de 2025
Antes de continuar… Está curtindo esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Conclusão
Neste artigo, exploramos como trabalhar com datas no Python utilizando o módulo datetime.
Aprendemos a criar e formatar datas e horários, converter entre strings e objetos de data, calcular diferenças e manipular fusos horários.
Além disso, abordamos operações com timedelta, manipulações de datas futuras e passadas e formatação de datas em diferentes idiomas.
Com esses conhecimentos, você está preparado para gerenciar datas de forma eficaz em suas aplicações Python!
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6