Gerador de datas recorrentes
A cada 7 dias de 1º de janeiro a 26 de fevereiro de 2024 saem 9 datas, com a primeira e a última incluídas. Informe um início, um intervalo em dias e um fim para listar cada data dessa cadência, para reuniões, faturamento ou lembretes. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Início
- 2024-01-01
- Dias de intervalo
- 7
- Fim
- 2024-02-26
- Quantidade
- 9
- Dias do trecho
- 56
Um gerador de datas recorrentes responde a uma pergunta prática de planejamento: dado um primeiro dia de calendário, um intervalo fixo de dias inteiros e um dia final, quais datas caem nessa cadência dentro da janela inclusiva? Equipes usam para standups quinzenais, rodadas semanais de faturamento, lembretes de medicação a cada três dias e qualquer agenda que não seja uma expressão cron completa.
Como a série inclusiva em passos de dias é definida
Start é a primeira ocorrência candidata como data de calendário ISO YYYY-MM-DD; datetimes ISO-8601 são aceitos e só a parte de data de calendário é usada no avanço. Interval_days é um inteiro positivo que significa o vão em dias inteiros entre ocorrências consecutivas—sete para semanal, quatorze para quinzenal, trinta para um plano simples a cada trinta dias, e assim por diante. End é a última data que pode aparecer na lista; o intervalo é inclusivo, então se uma data escalonada cair exatamente em end ela é mantida.
O motor converte start e end em números seriais de dia civil com fórmulas inteiras no estilo Howard Hinnant e emite start, start mais o intervalo, start mais o dobro do intervalo, e assim por diante enquanto o dia serial for menor ou igual a end. Se start for depois de end o array dates fica vazio e count é zero em vez de erro, o que simplifica jobs em lote.
Onde a lista de datas ajuda e seus limites
Chame o gerador gratuito de datas recorrentes no navegador para demos de planejamento, checagens em planilhas e mockups de produto sem instalar bibliotecas de calendário em cada linguagem. Entradas de origem seguem as mesmas regras de retenção de outros itens parse do KIT. Prefira janelas na escala de calendário para tabelas de UI e mantenha séries diárias muito densas dentro do teto de ocorrências publicado.
Autores de SDKs podem mapear o array dates diretamente em seletores de data, construtores ICS e colunas de tabela—a mesma sequência que um planejador escreveria à mão ao marcar cada N dias em um calendário de parede do primeiro dia ao último.
Casos de uso
Grades de lembretes e medicação
Apps de saúde e hábitos listam cada dose ou check-in a cada N dias entre dois limites de calendário sem embutir motores RRULE completos para o caso simples de vão fixo.
Perguntas frequentes
Como gero datas recorrentes a cada N dias?
A resposta inclui um array dates com cada ocorrência no intervalo inclusivo.
O que acontece se o intervalo for zero ou negativo?
Interval_days deve ser um inteiro positivo para que o passo não possa loopar para sempre; falhas de validação não são cobradas.
A data final é incluída?
Sim. O intervalo é inclusivo: se uma data escalonada cair exatamente em end, ela aparece em dates. Se start for depois de end, dates fica vazio e count é zero.
O gerador de datas recorrentes é gratuito?
A ferramenta do navegador roda grátis no seu dispositivo.
Usa meu fuso horário local ou Date do JavaScript?
Não. O avanço usa aritmética pura de dias civis gregorianos só na parte de calendário YYYY-MM-DD, então os resultados são determinísticos entre hosts e fusos horários.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/date/recurring-dates \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2024-01-01","interval_days":7,"end":"2024-02-26"}'const res = await fetch("https://api.kit.forhosting.com/date/recurring-dates", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2024-01-01",
"interval_days": 7,
"end": "2024-02-26"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/recurring-dates",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2024-01-01",
"interval_days": 7,
"end": "2024-02-26"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/recurring-dates", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2024-01-01","interval_days":7,"end":"2024-02-26"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2024-01-01","interval_days":7,"end":"2024-02-26"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/recurring-dates", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"start": "2024-01-01",
"interval_days": 7,
"end": "2024-02-26"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.recurring_dates",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Esta capacidade calcula a série com aritmética pura de dias civis gregorianos, sem tocar o relógio do host nem fusos horários flutuantes para a parte de data, de modo que o mesmo JSON sempre retorna para as mesmas entradas. Um intervalo não positivo é rejeitado como invalid_input para que um passo zero não gire para sempre.
Como a série inclusiva em passos de dias é definida
Informe três campos: start, interval_days e end. Campos ausentes, datas malformadas, dias impossíveis como trinta e um de fevereiro e qualquer intervalo zero ou negativo falham com invalid_input e não são cobrados. Aliases opcionais como from, to e interval mapeiam para os mesmos parâmetros para que chamadores de SDK usem nomes familiares sem mudar a matemática.
Como ler a resposta e escolher um intervalo prático
Span_days é a diferença com sinal entre os dias seriais de end e start, útil para resumos de UI mesmo com lista vazia. Inclusive é sempre true para que clientes não precisem adivinhar regras de borda. Use só count quando precisar de quantos acertos caem em um trimestre; use o array completo dates quando calendários, lembretes ou exportações CSV precisarem de cada linha. Em sucesso a resposta ecoa start e end normalizados como YYYY-MM-DD, o interval_days que você enviou, count como o comprimento da série e dates como um array ascendente de strings de calendário ISO. Method é sempre recurring_dates para que roteadores a jusante ramifiquem sem cheirar formas. Escolha interval_days para combinar com a cadência real: um para todos os dias, sete para o mesmo dia da semana a cada semana a partir de start, quatorze para semana sim semana não, e passos maiores quando só precisar de marcos esparsos. O teto de interval_days é três mil seiscentos e cinquenta para que um único pedido não peça passos absurdos de várias décadas; a contagem de ocorrências também é limitada por segurança do Worker, então intervalos muito longos com passo um devem ser divididos em pedaços.
Uso da API, preços, fluxos de trabalho e limites
Envie um corpo JSON com start, interval_days e end obrigatórios. Use a API pré-paga quando um pipeline de faturamento, serviço de lembretes, agendador curricular ou runbook de ops precisar de um contrato estável sob saldo KIT a US$ 0,002 por item bem-sucedido; falhas de validação nunca consomem saldo após a rejeição do motor. Combine este endpoint com contadores de dias úteis quando precisar pular fins de semana e feriados, ou com ferramentas de próxima execução cron quando precisar de horários de relógio de parede em vez de uma lista pura de dias.
Casos de integração
Listas de planejamento semanal e quinzenal
Equipes de produto e operações geram séries no estilo de toda segunda-feira de um início conhecido até o fim do trimestre com interval_days em 7 ou 14 e exportam o array dates para calendários ou planilhas.
Datas de fatura e relatórios periódicos
Scripts financeiros calculam dias recorrentes de fatura ou relatório com um vão fixo de dias e fixam o JSON em testes para que jobs em lote não desloquem entre ambientes.