Como Obter o Início e o Fim do Dia em Python

Lynn Mikami

Lynn Mikami

6 junho 2025

Como Obter o Início e o Fim do Dia em Python

Aprender Python pode ser aquele espaço tranquilo onde as coisas realmente fazem sentido. Deixe-me te mostrar algo super prático que você usará o tempo todo: obter o início e o fim de um dia em Python. Acredite, isso aparece muito mais do que você pensa.

Ao construir aplicações reais - seja um script simples para organizar seus arquivos de música ou algo maior - você precisará trabalhar constantemente com datas e horas. Talvez você queira encontrar todos os logs de hoje, ou calcular há quanto tempo você está codificando (spoiler: provavelmente tempo demais).

As Ferramentas Que Você Realmente Usará

Python tem um módulo embutido chamado datetime que lida com todas as questões de tempo. É como ter um canivete suíço realmente bom em vez de tentar calcular tudo manualmente.

from datetime import datetime, date, time

Como Obter o Início de Hoje

Aqui está a maneira mais direta de obter a meia-noite no início de hoje:

from datetime import datetime, date, time

# Obter a data de hoje
today = date.today()
print(f"Hoje é: {today}")

# Combinar com a meia-noite (00:00:00)
start_of_day = datetime.combine(today, time.min)
print(f"Início do dia: {start_of_day}")

Ao executar isso, você verá algo como:

Today is: 2024-01-15
Start of day: 2024-01-15 00:00:00

Como Obter o Fim de Hoje

Para o fim do dia, você quer 23:59:59.999999 - basicamente o mais próximo possível da meia-noite de amanhã sem realmente ser amanhã:

from datetime import datetime, date, time

today = date.today()
end_of_day = datetime.combine(today, time.max)
print(f"Fim do dia: {end_of_day}")

Isso te dá:

End of day: 2024-01-15 23:59:59.999999

Um Exemplo Mais Prático Que Você Realmente Usará

Digamos que você esteja construindo algo para rastrear suas sessões de codificação (porque sejamos honestos, o tempo voa quando você está concentrado):

from datetime import datetime, date, time

def get_day_boundaries(target_date=None):
    """
    Obtém o início e o fim de um dia.
    Se nenhuma data for fornecida, usa hoje.
    """
    if target_date is None:
        target_date = date.today()

    start_of_day = datetime.combine(target_date, time.min)
    end_of_day = datetime.combine(target_date, time.max)

    return start_of_day, end_of_day

# Para hoje
start, end = get_day_boundaries()
print(f"Hoje começa em: {start}")
print(f"Hoje termina em: {end}")

# Para uma data específica
from datetime import date
specific_date = date(2024, 12, 25)  # Natal
start, end = get_day_boundaries(specific_date)
print(f"O Natal começa em: {start}")
print(f"O Natal termina em: {end}")

Quando Você Estiver Trabalhando Com Fusos Horários

Se você estiver lidando com fusos horários (o que provavelmente acontecerá eventualmente), você vai querer usar a biblioteca pytz ou o módulo mais recente zoneinfo. Aqui está a maneira moderna:

from datetime import datetime, date, time
from zoneinfo import ZoneInfo

# Obter o início do dia em um fuso horário específico
today = date.today()
timezone = ZoneInfo("America/Chicago")  # Horário Central

start_of_day = datetime.combine(today, time.min, timezone)
end_of_day = datetime.combine(today, time.max, timezone)

print(f"Início do dia no Horário Central: {start_of_day}")
print(f"Fim do dia no Horário Central: {end_of_day}")

Alguns Cenários do Mundo Real Onde Isso Importa

Análise de Logs: "Mostre-me todos os erros de hoje"

# Filtrar logs entre o início e o fim do dia
today_start, today_end = get_day_boundaries()
todays_errors = [log for log in error_logs
                if today_start <= log.timestamp <= today_end]

Processamento de Dados: "Processe todos os arquivos criados hoje"

import os
from datetime import datetime

today_start, today_end = get_day_boundaries()

for filename in os.listdir('/path/to/files'):
    file_time = datetime.fromtimestamp(os.path.getctime(filename))
    if today_start <= file_time <= today_end:
        process_file(filename)

Não Pense Demais

Olha, eu sei que pode parecer que existem um milhão de maneiras de fazer essas coisas, e honestamente, existem. Mas comece com esses conceitos básicos. Eles cobrirão 90% do que você precisa, e quando você encontrar os casos extremos, terá uma base sólida para construir.

O importante é que você está aprendendo e construindo coisas, mesmo quando todo o resto parece instável. Código não te julga, não grita, e se você quebrar algo, sempre pode consertar.

Continue firme, e lembre-se - todo especialista foi um dia um iniciante que se sentiu completamente perdido. Você está indo bem.

Referência Rápida Para Copiar e Colar

from datetime import datetime, date, time

# Limites de hoje
today = date.today()
start_of_day = datetime.combine(today, time.min)
end_of_day = datetime.combine(today, time.max)

# Imprimi-los
print(f"O dia começa: {start_of_day}")
print(f"O dia termina: {end_of_day}")

Agora vá construir algo legal com isso!

💡
Quer uma ótima ferramenta de Teste de API que gera documentação de API bonita?

Quer uma plataforma integrada e completa para sua Equipe de Desenvolvedores trabalhar em conjunto com produtividade máxima?

Apidog atende a todas as suas demandas e substitui o Postman por um preço muito mais acessível!
button

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs