Módulo 5 - Módulos e a biblioteca padrão

Trabalhando com datas: datetime em visão geral

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Pegar a data e hora atual com datetime.now().
  • Criar uma data específica com datetime ou date.
  • Calcular a diferença entre duas datas e entender o timedelta.
  • Saber que o módulo 14 aprofunda formatação e fuso horário.

A data e a hora de agora

Quase todo programa precisa lidar com o tempo em algum momento: registrar quando algo aconteceu, calcular um prazo, descobrir a idade de alguém. Guardar isso como texto, tipo "25/12/2026", é uma armadilha, porque você não consegue comparar nem calcular com texto de forma confiável. O módulo datetime resolve isso com objetos de data que sabem fazer contas. O ponto de partida é a função now, que devolve o instante atual.

from datetime import datetime

agora = datetime.now()
print(agora)          # 2026-07-02 14:30:05.123456

# partes acessiveis por atributo
print(agora.year)     # 2026
print(agora.month)    # 7
print(agora.day)      # 2
print(agora.hour)     # 14

datetime.now() devolve o instante atual, com ano, mês, dia e hora acessíveis por atributo.

Repare no import diferente: from datetime import datetime. O nome do módulo e o nome da classe principal dentro dele são iguais, datetime, o que confunde no começo. A leitura é: do módulo datetime, traga a classe datetime. A partir daí, datetime.now() devolve o momento atual e você acessa cada parte por atributo, como .year e .day. Nada de fatiar texto: os pedaços já vêm prontos e corretos.

Criar uma data e comparar

Além de pegar o agora, você quase sempre precisa criar uma data específica, como um prazo ou um feriado. Basta informar ano, mês e dia, nessa ordem. E como esses objetos entendem o calendário de verdade, você pode compará-los com os operadores que já conhece do Básico: maior, menor, igual. Perguntar se uma data vem antes de outra é tão simples quanto comparar dois números.

from datetime import datetime

natal = datetime(2026, 12, 25)
hoje = datetime.now()

print(natal > hoje)   # True, se ainda nao chegou o Natal

if hoje < natal:
    print("O Natal ainda nao chegou.")
else:
    print("O Natal ja passou este ano.")

Objetos de data se comparam com <, > e == como se fossem números.

A diferença entre duas datas

O cálculo mais pedido com datas é a diferença: quantos dias faltam para um prazo, há quanto tempo algo aconteceu, quantos dias uma pessoa já viveu. No datetime isso é uma subtração direta. Quando você subtrai uma data de outra, o Python não devolve um número solto: ele devolve um objeto timedelta, que representa uma duração. Desse timedelta você tira a quantidade de dias com o atributo .days.

from datetime import date

ano_novo = date(2027, 1, 1)
hoje = date.today()

faltam = ano_novo - hoje   # isto e um timedelta
print(faltam.days, "dias para o Ano Novo")
# ex.: 183 dias para o Ano Novo

nascimento = date(1990, 5, 20)
vividos = hoje - nascimento
print(f"Voce ja viveu {vividos.days} dias")

Subtrair datas devolve um timedelta; .days dá a diferença em dias.

Essa visão geral já resolve muita coisa do dia a dia: pegar o agora, criar datas, compará-las e medir a distância entre elas. O que fica para o módulo 14 é o refinamento: formatar uma data para exibir no jeito brasileiro, ler uma data que veio como texto, somar dias a uma data e lidar com fuso horário. Por ora, você tem o essencial para não guardar mais datas como texto solto e para deixar o Python fazer as contas de calendário por você, sem erro.

Teste rápido

O que você recebe ao subtrair uma data de outra no Python?

Perguntas frequentes

Por que o import é from datetime import datetime, com o nome repetido?
Porque o módulo se chama datetime e a classe principal dentro dele também se chama datetime. A linha lê-se: do módulo datetime, traga a classe datetime. É confuso no começo, mas comum. Se quiser só a data sem hora, importe a classe date do mesmo módulo.
Qual a diferença entre datetime e date?
A classe datetime guarda data e hora juntas (ano, mês, dia, hora, minuto, segundo). A classe date guarda apenas a data (ano, mês, dia). Use date quando a hora não importa, como uma data de nascimento ou um prazo em dias, e datetime quando você precisa do horário também.
Como pego só a data de hoje, sem a hora?
Use date.today(), depois de from datetime import date. Ela devolve apenas ano, mês e dia de hoje. Se você já tem um datetime completo e quer só a parte da data, pode chamar o método .date() nele, como agora.date().
Dá para somar dias a uma data?
Dá, usando um timedelta, como data + timedelta(days=7) para daqui a uma semana. Este é um dos tópicos que o módulo 14 detalha, junto com formatar datas e lidar com fuso horário. Nesta aula o foco é a visão geral: pegar, criar, comparar e medir a diferença.
Por que não guardar a data como texto, tipo "02/07/2026"?
Porque texto não faz contas nem comparações confiáveis. "10/01" viria antes de "02/07" numa ordenação de texto, o que está errado. Objetos de data entendem o calendário, comparam certo e calculam diferenças. Guarde datas como objetos e só converta para texto na hora de exibir.
Este módulo já cobre fuso horário e formatação?
Não em profundidade. Esta aula é a visão geral para você já usar datas no dia a dia. Formatar uma data no padrão brasileiro, ler uma data que veio como texto e trabalhar com fuso horário são temas do módulo 14, que aprofunda o datetime com calma.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.