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:
%d
representa o dia,%m
o mês e%Y
o ano. -
Formatação: Convertendo
data_atual
para 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:
%H
para horas,%M
para minutos e%S
para segundos. -
Formatação: Convertendo
hora_atual
para 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_string
no formatoDD/MM/AAAA
. -
Análise: Usamos
strptime
para 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_atual
dedata_futura
para 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
now
com 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
: Usamosstrftime
para 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!