Gerador RRULE iCal (RFC 5545)
Gera regras de recorrência RRULE conforme RFC 5545 com FREQ, BYDAY, INTERVAL, COUNT/UNTIL preview das próximas 10 ocorrências.
RRULE: a gramática de recorrência calendar-aware do iCalendar
RRULE é abreviação de Recurrence Rule e é a propriedade do formato iCalendar (RFC 5545, Seção 3.8.5.3) que descreve como um VEVENT, VTODO ou VJOURNAL se repete. Em vez de materializar cada ocorrência no disco, a regra é armazenada uma vez e os clientes a expandem em tempo real — por isso uma "reunião semanal para sempre" ocupa algumas dezenas de bytes em vez de milhares de linhas. Diferente de uma expressão cron, RRULE é calendar-aware: entende meses de tamanhos diferentes, dias da semana, anos bissextos, posições ordinais ("última sexta") e a diferença entre hora local e UTC.
A regra mínima é RRULE:FREQ=DAILY;COUNT=10. O token FREQ aceita SECONDLY, MINUTELY, HOURLY, DAILY, WEEKLY, MONTHLY e YEARLY. Modificadores refinam a cadência: INTERVAL (a cada N unidades — INTERVAL=2 em regra semanal vira "a cada duas semanas"), COUNT (exatamente N ocorrências), UNTIL (encerra em um instante UTC específico), BYDAY (lista separada por vírgula com MO,TU,WE,TH,FR,SA,SU), BYMONTHDAY (1,15 para dia 1 e 15), BYMONTH, BYSETPOS (pega a N-ésima ocorrência dentro de um conjunto) e WKST (qual dia começa a semana — padrão segunda).
Exemplos práticos
# Diariamente por dez dias
RRULE:FREQ=DAILY;COUNT=10
# Toda sexta-feira, sem fim
RRULE:FREQ=WEEKLY;BYDAY=FR
# Última sexta do mês
RRULE:FREQ=MONTHLY;BYDAY=-1FR
# Aniversário em 15 de maio todo ano
RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=15
# Dia 1 e dia 15 de cada mês
RRULE:FREQ=MONTHLY;BYMONTHDAY=1,15
# Seg/Qua/Sex por 12 semanas
RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR;COUNT=12
EXDATE, RDATE e padrões complexos
Agendas reais são bagunçadas. Para pular uma ocorrência (um cancelamento pontual de feriado, por exemplo), adicione uma linha EXDATE com o horário exato da instância pulada. Para injetar uma ocorrência extra que a regra não cobre, use RDATE. Combinado com BYSETPOS ("a segunda terça de cada mês" → FREQ=MONTHLY;BYDAY=TU;BYSETPOS=2), o combo de quatro propriedades cobre quase toda regra de negócio que um app de agenda vai precisar sem cair em materializar linhas.
Compatibilidade, bibliotecas e horário de verão
RRULE é suportado por todo cliente de calendário relevante: Google Agenda, Microsoft Outlook, Apple Calendar, Fantastical, Notion Calendar, Thunderbird Lightning e qualquer servidor CalDAV (Nextcloud, Radicale, Baikal, Apple iCloud). No lado do código, bibliotecas maduras cuidam da expansão: rrule.js (Jakub Roztocil, a implementação JS de facto — também é a que move este gerador), o módulo rrule do python-dateutil, o iCal4j (Java) e o recurring_events_for (Ruby). Casos de borda para testar: transições de horário de verão (um evento às 02:30 local durante a virada para frente simplesmente não existe naquele dia), anos bissextos (eventos em 29 de fevereiro) e variações de fim de mês (o dia 31 em fevereiro — a maioria dos clientes descarta silenciosamente, mas confira). No Brasil o horário de verão foi extinto em 2019, então DST só importa para agendas que cruzam fronteiras.
Perguntas frequentes
Por que não usar cron? Cron é granular em minutos e vive no sistema operacional — não entende calendários, dias da semana, ordinais como "última sexta" ou feriados. RRULE é calendar-aware e vive dentro do evento .ics, então viaja junto com o convite de reunião.
O suporte é mesmo universal? Sim — Google, Apple, Microsoft e todo cliente CalDAV leem e escrevem RRULE porque é a única gramática de recorrência do padrão iCalendar.
Posso combinar COUNT e UNTIL? Não — a RFC 5545 proíbe. Use um ou outro; UNTIL tem precedência nos clientes que violam a spec.
O que o WKST muda? Só importa com BYWEEKNO ou regras semanais que cruzam fronteira de semana. No Brasil é comum a semana começar no domingo (WKST=SU); no ISO 8601 (e padrão da RRULE) começa na segunda (WKST=MO).
Ferramentas Relacionadas
Gerador de Manuscrito
Converte texto digitado em uma imagem com aparência de letra manuscrita. Útil para tornar trabalhos digitais mais pessoais.
Gerador de Currículo
Preenche um currículo simples (CV) imprimível em A4 a partir de formulário com dados pessoais, formação e experiência.
Gerador de Favicon
Gera favicon a partir de texto/emoji em todos os tamanhos comuns (16, 32, 48, 64, 192, 512). Download como PNG.