Pular para o conteúdo
🛠️ToolsShed

Gerador de Datas Recorrentes

Gera datas de eventos recorrentes: diário, semanal, mensal ou intervalos personalizados.

Sobre esta ferramenta

Um Gerador de Datas Recorrentes ajuda você a calcular e exibir datas para eventos repetidos sem fazer contas manualmente. Quer você esteja planejando reuniões semanais de equipe, pagamentos de contas mensais ou lembretes diários, essa ferramenta gera instantaneamente todas as datas que você precisa com base na data inicial e no padrão de recorrência.

Para usar a ferramenta, selecione sua data inicial, escolha um tipo de recorrência (diária, semanal, mensal ou anual) e defina quantas ocorrências você deseja gerar. A ferramenta mostrará imediatamente uma lista completa de todas as datas futuras dos eventos, que você pode copiar, exportar ou consultar conforme necessário. Você também pode especificar intervalos personalizados, como a cada 3 semanas ou a cada 6 meses.

Esta ferramenta é inestimável para gerentes de projeto, planejadores de eventos e qualquer pessoa que agenda tarefas recorrentes. Ela elimina erros de cálculos manuais de datas e economiza tempo ao coordenar reuniões, assinaturas ou cronogramas de manutenção em várias datas.

Perguntas Frequentes

Implementação de Código

from datetime import date, timedelta
from dateutil.relativedelta import relativedelta  # pip install python-dateutil

def generate_recurring_dates(
    start: str,
    pattern: str,
    count: int,
    days_of_week: list[int] = None,  # 0=Mon..6=Sun, for weekly multi-day
) -> list[str]:
    """
    pattern: 'daily' | 'weekly' | 'biweekly' | 'monthly' | 'yearly'
    """
    start_date = date.fromisoformat(start)
    results = []

    if pattern == "weekly" and days_of_week:
        # Multi-day-of-week weekly
        d = start_date - timedelta(days=start_date.weekday())  # Go to Monday of week
        while len(results) < count:
            for dow in sorted(days_of_week):
                if len(results) >= count:
                    break
                candidate = d + timedelta(days=dow)
                if candidate >= start_date:
                    results.append(candidate.isoformat())
            d += timedelta(weeks=1)
        return results

    current = start_date
    for _ in range(count):
        results.append(current.isoformat())
        if pattern == "daily":
            current += timedelta(days=1)
        elif pattern == "weekly":
            current += timedelta(weeks=1)
        elif pattern == "biweekly":
            current += timedelta(weeks=2)
        elif pattern == "monthly":
            current += relativedelta(months=1)
        elif pattern == "yearly":
            current += relativedelta(years=1)
    return results

# Examples
print(generate_recurring_dates("2025-01-06", "weekly", 5))
print(generate_recurring_dates("2025-01-01", "monthly", 6))
print(generate_recurring_dates("2025-01-06", "weekly", 8, days_of_week=[0, 2]))  # Mon+Wed

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.