Data e hora

Gerador de RRULE · Confira as datas antes de usar a regra

Monte uma repetição ou analise uma regra existente com início, fuso e prévia das ocorrências.

Gerador de RRULE

Condições de repetição

BYDAY: MO,WE ou 2TU,-1FR; ordinais apenas mensais/anuais. BYMONTHDAY: −31…−1, 1…31; BYMONTH: 1…12; BYSETPOS: −366…−1, 1…366 com outro filtro BY. Separe listas com vírgulas; filtros vazios são omitidos.

Regra e prévia das datas

A entrada é processada neste navegador e não é enviada a um servidor.

Opções

Início: data ISO local com segundos, como 2026-09-14T09:00:00. UNTIL: data UTC com Z. O próprio DTSTART precisa atender à regra.

Horários inexistentes usam o deslocamento anterior à mudança e mostram a hora ajustada. Horários duplicados usam a primeira ocorrência. Datas inexistentes são ignoradas.

Apenas dia/semana/mês/ano. 8.192 unidades UTF-16, 100 exclusões e COUNT até 10.000. Prévia: 1–1.000 datas, dez anos desde DTSTART, até 2099; tempo máximo de cinco segundos.

A entrada ou as opções mudaram. Atualize os resultados antes de exportar.

O Gerador de RRULE ajuda a conferir reuniões quinzenais, fechamentos mensais e cancelamentos pontuais. Regras de recorrência não são apenas uma lista de dias: o primeiro horário também precisa corresponder ao padrão que será repetido.

Os eventos recorrentes são calculados desde DTSTART, não a partir de hoje. Formulário e texto ficam separados, e a prévia mantém o fuso horário visível. O resultado é um fragmento iCalendar que ainda precisa dos demais dados do evento na aplicação de destino.

Por que usar este Gerador de RRULE

Dia 31 e fim do mês são regras diferentes

O Gerador de RRULE preserva essa diferença. BYMONTHDAY=31 pula os meses sem dia 31; BYMONTHDAY=-1 escolhe o último dia real de cada mês. A prévia de fevereiro mostra se a cobrança foi configurada para o fechamento ou apenas para um dia fixo.

Duas sequências de calendários comparam o dia 31 fixo, que pula um mês curto, e o último dia de todos os meses.

Excluir uma ocorrência não prolonga a regra

COUNT limita a série original antes de EXDATE remover instantes correspondentes. Cinco ocorrências com uma exclusão deixam quatro datas. O relatório conta as remoções e não acrescenta uma ocorrência substituta no final.

Uma de cinco marcas foi riscada; as quatro restantes permanecem sem uma nova marca no final.

Alinhe o início, as condições e o fim

01

Comece com uma data compatível

Cada exemplo combina a regra com um DTSTART que atende ao padrão. Ao mudar de segunda-feira para a segunda terça-feira do mês, ajuste também o início. Exemplo e Limpar mostram as mudanças antes de aplicar e permitem desfazer uma vez.

02

Separe o relógio local do término em UTC

O início e as exceções do formulário são datas ISO locais com segundos no fuso IANA escolhido. UNTIL exige UTC com Z. Um DTSTART no texto prevalece sobre os campos auxiliares; o resultado informa os valores realmente usados.

03

Leia por que a prévia parou

A atualização automática espera 350 ms. Desative-a para usar o botão ou Ctrl/Cmd+Enter. Alterações bloqueiam a exportação de resultados antigos. A tela avança de 50 em 50 datas; relatório e JSON incluem toda a prévia calculada.

Como os dias são selecionados

Intervalos e início da semana

INTERVAL avança dias, semanas, meses ou anos. BYDAY aceita códigos de dias e ordinais em regras mensais ou anuais. WKST define a fronteira da semana, que pode mudar o conjunto de datas em uma repetição quinzenal.

Uma posição entre os candidatos

BYMONTH filtra meses; BYMONTHDAY conta a partir do começo ou do fim do mês. BYSETPOS escolhe posições dentro do período. Segunda a sexta com -1 seleciona o último desses dias, sem consultar um calendário de feriados.

Um fragmento com contexto

A regra isolada usa início e fuso do painel. Datas explícitas precisam de Z ou TZID. O fragmento normalizado conserva o início efetivo, para que a cópia não perca o ponto de referência da repetição.

Horário local e UTC lado a lado

Cada linha mostra hora local, deslocamento e UTC. Quando uma lacuna de horário provoca ajuste, o horário solicitado também aparece. Uma reunião semanal comum preserva a hora local mesmo quando seu instante UTC muda.

Formatos aceitos e limites da prévia

Não é um evento completo
Aceita DTSTART, uma RRULE e até 100 EXDATE. Rejeita VEVENT, VCALENDAR, RDATE, EXRULE, extensões, DATE de dia inteiro e datas explícitas flutuantes. O TXT é um fragmento, não um evento ICS pronto para importar.
Quatro frequências e filtros definidos
Frequências de segundos, minutos e horas, além de BYHOUR, BYMINUTE, BYSECOND, BYYEARDAY e BYWEEKNO, não são aceitas. A hora do dia vem de DTSTART. Propriedades desconhecidas geram erro, sem descarte silencioso.
Início coerente e um único término
DTSTART precisa corresponder à regra. COUNT aceita 1–10.000 e não pode coexistir com UNTIL. O término deve ser UTC, não pode anteceder o início e inclui uma ocorrência exatamente no instante final.
Datas impossíveis e horários inexistentes
Datas inválidas são puladas sem consumir COUNT. Lacunas seguem a errata verificada 4271 da RFC 5545: deslocamento anterior à transição e exibição do horário ajustado. Horários duplicados usam a primeira ocorrência. Os dados do fuso vêm do navegador.
Exclusões de instantes exatos
EXDATE pode remover o próprio DTSTART, mas não remove um dia inteiro nem repõe a contagem. Exceções duplicadas são normalizadas. Não há ajuste por feriados nem remarcação de compromissos cancelados.
Uma prévia limitada
A entrada admite 8.192 unidades UTF-16. Solicite 1–1.000 datas dentro de dez anos desde DTSTART, entre 1970 e 2099. O cálculo para após cinco segundos. Quantidade atingida, série encerrada e limite da busca têm mensagens distintas.

Gerador de RRULE: perguntas frequentes

O gerador produz um VEVENT completo?

Não. O resultado contém propriedades de recorrência. UID, DTSTAMP, título e demais campos do evento precisam ser acrescentados pela aplicação que vai usá-lo. A validade de um documento ICS inteiro não é verificada aqui.

Um arquivo ICS pode conter um evento que se repete?

Sim: um evento pode usar RRULE com DTSTART e exceções, sem listar cada data como evento independente. Este gerador ajuda a preparar o fragmento, mas não cria o arquivo ICS completo nem o envia a um calendário.

Como excluo uma data?

EXDATE é uma propriedade separada de RRULE. No formulário, informe um horário local completo por linha; na análise de texto, use Z ou TZID. A saída normaliza as exclusões como instantes UTC.

O horário de verão altera as repetições?

O fuso IANA escolhido interpreta cada data local, então UTC pode mudar. Um horário inexistente usa o deslocamento anterior à transição, e um horário repetido representa a primeira ocorrência daquela hora.

Posso repetir no dia 31 ou no dia mais próximo?

BYMONTHDAY=31 pula meses curtos. Para repetir no último dia de todos os meses, use BYMONTHDAY=-1. O gerador não move automaticamente o dia 31, pois isso mudaria a regra solicitada.

Encontrou uma data inesperada?

Confira sua próxima série

O Gerador de RRULE mostra início, exclusões e instantes calculados juntos. Confira a série antes de copiar o fragmento para seu sistema de calendário.