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.