Converta um cron em uma lista das próximas execuções
*/20 9-10 * * 1-5, a partir das 09:05 UTC de 27 de julho de 2026, roda às 09:20, 09:40, 10:00 e 10:20. Cole uma expressão cron, um início e quantas execuções você quer, e veja os horários exatos. 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
- Cron
- */20 9-10 * * 1-5
- Quantidade
- 4
- Hora de início
- 2026-07-27T09:05:00Z
- Horários de execução
- 2026-07-27T09:20:00Z, 2026-07-27T09:40:00Z, 2026-07-27T10:00:00Z, 2026-07-27T10:20:00Z
Uma expressão cron é compacta, mas essa sintaxe nem sempre é simples de revisar. Esta capacidade transforma uma expressão cron padrão de cinco campos em uma lista concreta dos próximos horários UTC, começando estritamente depois do instante informado por você. Escolha quantas ocorrências deseja receber e obtenha valores ISO 8601 exatos para copiar em testes, runbooks, chamados ou revisões de implantação. Campos malformados geram um erro de entrada claro, em vez de produzirem uma programação aparentemente plausível, porém incorreta.
Transforme a sintaxe cron compacta em datas verificáveis
Uma expressão cron de cinco campos descreve minutos, horas, dias do mês, meses e dias da semana. A notação é eficiente para máquinas, mas quem revisa uma programação geralmente precisa ver datas reais antes de confiar nela. Informe a expressão, um horário inicial ISO 8601 UTC exclusivo e uma quantidade de 1 a 100.
O resultado repete a solicitação normalizada e retorna os próximos instantes correspondentes em uma lista legível de horários terminados em Z. O início é exclusivo: se ele for exatamente 09:00 e a expressão executar às 09:00, o primeiro resultado será a ocorrência seguinte. Cron tem resolução de um minuto; por isso, todos os horários retornados têm zero segundos.
Listas, intervalos inclusivos, curingas e passos positivos funcionam em todos os campos. Por exemplo, */15 no campo de minutos seleciona quatro momentos por hora, enquanto 9-17/2 seleciona horas alternadas dentro desse intervalo. Os valores numéricos de dia da semana aceitam domingo como 0 ou 7.
Entenda as regras de calendário usadas no resultado
Todos os cálculos usam o calendário gregoriano proléptico e UTC. Exigir um horário terminado em Z evita conversões ocultas de fuso que poderiam deslocar uma execução para outra data ou para uma transição de horário de verão. A duração dos meses e os anos bissextos são calculados diretamente, inclusive a regra dos séculos: anos divisíveis por 100 não são bissextos, exceto quando também são divisíveis por 400.
A correspondência do dia da semana segue o comportamento cron convencional. Quando o dia do mês ou o dia da semana é um curinga, o campo restrito controla a correspondência. Quando ambos são restritos, a data corresponde se qualquer um deles corresponder.
Isso importa em 0 9 1 * 1, que significa 09:00 no primeiro dia de cada mês e também nas segundas-feiras; não significa somente segundas-feiras que sejam dia 1. As ocorrências são ordenadas cronologicamente e geradas com aritmética inteira determinística. Assim, a mesma entrada produz a mesma saída em qualquer máquina, fuso local, relógio atual ou localidade.
Valide programações antes de colocá-las em produção
Use a lista como um teste de aceitação pequeno e concreto para automações. A pessoa que revisa uma implantação pode confirmar que um trabalho de dias úteis não invade o fim de semana; uma pessoa operadora pode copiar as próximas janelas de manutenção para um runbook; e quem desenvolve pode transformar os horários em dados de teste do agendador. O analisador rejeita expressões que não tenham exatamente cinco campos.
Ele também rejeita itens vazios em listas, intervalos invertidos, passos zero ou malformados e números fora dos limites. Os intervalos aceitos são 0–59 para minutos, 0–23 para horas, 1–31 para dias do mês, 1–12 para meses e 0–7 para dias da semana. Esta capacidade não aceita nomes de meses ou dias, campos de segundos ou anos, macros como @daily nem extensões específicas de uma implementação.
Essas construções variam entre mecanismos cron; presumir o significado silenciosamente prejudicaria a prévia.
Casos de uso
Revise uma programação de implantação
Expanda uma string cron em datas UTC exatas antes de aprovar uma tarefa programada em produção.
Crie dados de teste para agendadores
Gere horários esperados e estáveis para testes unitários e de integração sem depender do relógio atual.
Prepare um runbook operacional
Liste próximos horários de manutenção ou relatórios em um formato pronto para a documentação operacional.
Perguntas frequentes
Qual formato cron é aceito?
Cron numérico padrão de cinco campos: minuto, hora, dia do mês, mês e dia da semana. Curingas, listas, intervalos e passos positivos são aceitos.
O horário inicial é incluído?
Não. O início é exclusivo; uma execução exatamente igual é ignorada e a próxima ocorrência é retornada.
Qual fuso horário é usado?
Somente UTC. Informe um horário ISO 8601 terminado em Z; todos os horários retornados também terminam em Z.
Como dia do mês e dia da semana são combinados?
Se ambos forem restritos, a correspondência de qualquer um seleciona a data. Se um for curinga, o outro controla a seleção.
O que significa */15 em um agendamento cron?
Significa a cada 15 minutos, ou seja, quatro execuções por hora. Os passos também valem para intervalos: 9-17/2 na posição da hora escolhe uma hora sim, outra não, entre nove e cinco da tarde.
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/data/cron-to-readable \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"cron":"*/20 9-10 * * 1-5","count":4,"start_time":"2026-07-27T09:05:00Z"}'const res = await fetch("https://api.kit.forhosting.com/data/cron-to-readable", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"cron": "*/20 9-10 * * 1-5",
"count": 4,
"start_time": "2026-07-27T09:05:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/cron-to-readable",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"cron": "*/20 9-10 * * 1-5",
"count": 4,
"start_time": "2026-07-27T09:05:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/cron-to-readable", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"cron":"*/20 9-10 * * 1-5","count":4,"start_time":"2026-07-27T09:05:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"cron":"*/20 9-10 * * 1-5","count":4,"start_time":"2026-07-27T09:05:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/cron-to-readable", 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
{
"cron": "*/20 9-10 * * 1-5",
"count": 4,
"start_time": "2026-07-27T09:05:00Z"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.cron_to_readable",
"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.
Limites
max_count | 100 |
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
Valide programações antes de colocá-las em produção
A automação via API custa US$ 0,002 por solicitação, e o algoritmo não usa rede nem serviço externo.
Perguntas técnicas
O que acontece com um campo cron malformado?
A solicitação falha com um erro invalid_input que identifica o campo malformado ou o intervalo inválido.
Quanto custa uma solicitação pela API?
Cada solicitação pela API custa US$ 0,002. O cálculo determinístico não usa rede, armazenamento nem modelo externo.