Cole uma expressão cron e descubra, antes do deploy, o que ela faz de verdade: a explicação em português, os valores de cada campo e as próximas execuções no fuso que você escolher. Aceita o formato Unix de 5 campos e o de 6 campos com segundos, aponta o erro exato por campo e mostra o efeito do horário de verão. Tudo roda no seu navegador.
Ordem dos campos: minuto, hora, dia do mês, mês, dia da semana (no formato de 6 campos, o segundo vem antes). Aceita *, listas (1,15), intervalos (1-5), passos (*/15, 1-10/2), nomes (JAN-DEC, SUN-SAT) e macros como @daily.
Exemplos:
O cálculo roda no seu navegador; nada é enviado a servidores.
Como usar
- Digite a expressão, por exemplo
*/15 9-18 * * 1-5, ou clique em um dos exemplos. - Escolha o formato: 5 campos (crontab do Linux, GitHub Actions, Kubernetes CronJob) ou 6 campos, quando o primeiro campo é de segundos.
- Escolha o fuso. O padrão é o do seu navegador; UTC e a lista completa de fusos IANA ficam logo abaixo.
- Defina quantas execuções quer ver (5 a 50) e, para simular outra data, preencha A partir de.
- Clique em Calcular execuções ou pressione Enter. Copiar lista leva as datas, com o equivalente em UTC, para o seu caso de teste.
Exemplos
| Expressão | O que significa |
|---|---|
*/15 9-18 * * 1-5 | A cada 15 minutos, das 9h às 18h45, de segunda a sexta |
0 9 * * MON-FRI | Às 9h, de segunda a sexta |
0 0 1 * * | À meia-noite do dia 1 de cada mês (o mesmo que @monthly) |
30 4 1,15 * 5 | Às 4h30 nos dias 1 e 15 e também em toda sexta-feira |
*/10 * * * * * | A cada 10 segundos (formato de 6 campos) |
Como funciona
No formato de 5 campos, a ordem é minuto (0–59), hora (0–23), dia do mês (1–31), mês (1–12 ou JAN–DEC) e dia da semana (0–7 ou SUN–SAT, com 0 e 7 valendo domingo). No formato de 6 campos, o segundo (0–59) vem antes de tudo. Cada campo aceita *, listas (1,15), intervalos (1-5) e passos (*/15, 1-10/2); 20/15 é lido como 20-59/15, como no GitHub Actions.
As macros @yearly (ou @annually), @monthly, @weekly, @daily (ou @midnight) e @hourly são trocadas pela expressão equivalente. Já @reboot roda uma vez quando o serviço cron inicia (em geral, no boot). Como não depende de data nem hora, não há próximas execuções para calcular, e a ferramenta explica isso em vez de inventar datas.
A regra do OU entre dia do mês e dia da semana
Quando os dois campos de dia estão restritos (nenhum começa com *), o comando roda quando qualquer um deles bater, e não quando os dois baterem juntos. O manual do crontab dá o exemplo: 30 4 1,15 * 5 roda às 4h30 nos dias 1 e 15 de cada mês e também em toda sexta-feira. Para exigir as duas condições, filtre no próprio script. Se um dos campos começa com * (inclusive */2), ele não conta como restrito e os dois passam a valer juntos, como no cron Vixie/cronie.
Fusos e horário de verão
O cálculo segue o relógio do fuso escolhido, com as regras de fuso do navegador. Quando o relógio adianta, os horários inexistentes são pulados; quando atrasa, o horário repetido executa duas vezes, como descreve o manual do cronie. O fuso America/Sao_Paulo não tem horário de verão desde 2019; para ver o efeito, teste 0 0 * * * a partir de 02/11/2018: em 04/11/2018 a meia-noite não existiu, porque a mudança era à 0h.
Quartz, Spring e GitHub Actions
Cada sistema tem o seu dialeto de cron. Esta ferramenta implementa o cron Unix (5 campos) e a variante de 6 campos com segundos; quando encontra um recurso dos dialetos abaixo, diz qual é e de onde vem, sem tentar adivinhar.
- Quartz (Java): 6 ou 7 campos, com os segundos primeiro e o ano opcional no fim. O dia da semana vai de 1 a 7 (domingo = 1, e não 0), e um dos campos de dia precisa ser
?. Há aindaL(último),W(dia útil mais próximo) e#(n-ésimo dia da semana do mês, como6#3), não suportados aqui. - Spring (
CronExpression, desde a versão 5.3): 6 campos com segundos primeiro e dia da semana de 0 a 7, igual ao cron. Aceita também?,L,We#; sem eles, a expressão funciona aqui no formato de 6 campos. - GitHub Actions: 5 campos POSIX, executados em UTC por padrão, com um campo
timezoneopcional. O intervalo mínimo é de 5 minutos, e a execução pode atrasar em horários de pico, como o início de cada hora. Macros como@dailynão são aceitas, e, com fuso configurado, um horário pulado pelo horário de verão avança para o próximo horário válido (diferente do cronie). Para conferir um workflow, escolha UTC.
Uso em QA e desenvolvimento
- Revisar um job agendado no PR e anexar as próximas datas, no fuso do cliente e em UTC.
- Montar casos de borda: virada de mês e de ano, 29 de fevereiro, madrugada da troca de horário.
- Investigar “o job não rodou”: um fuso errado no servidor, a regra do OU ou um
*/35costumam explicar.
Erros comuns
- Esquecer que o servidor está em UTC:
0 9 * * *no GitHub Actions semtimezoneroda às 6h de Brasília. - Achar que
*/35é “a cada 35 minutos”: o passo recomeça a cada hora, então o job roda nos minutos 0 e 35. - Colar uma expressão Quartz no crontab: o
?e o segundo campo extra quebram a linha. A mensagem de erro aponta o campo. - Usar intervalo invertido, como
22-2para “das 22h às 2h”: o cron não dá a volta. Use22-23,0-2. - Pedir dia 30 ou 31 em meses que não têm:
0 0 30 2 *nunca executa, e a ferramenta diz isso.
Limitações
- Não suporta
?,L,W,#, o campo de ano do Quartz nem o~(aleatório) do cronie. - O cálculo procura execuções nos próximos 100 anos e mostra até 50 por vez.
- As regras de fuso são as do navegador; um navegador desatualizado pode não conhecer mudanças recentes.
Perguntas frequentes
Qual a diferença entre 0 e 7 no dia da semana?
Nenhuma: os dois representam domingo no cron Unix e no Spring. No Quartz é diferente, porque lá domingo é 1 e sábado é 7.
Por que meu job rodou duas vezes em um dia?
Ou o horário caiu na hora repetida do fim do horário de verão, ou a expressão restringe os dois campos de dia e caiu na regra do OU.
Minha expressão é enviada para algum servidor?
Não. Tudo roda no JavaScript da página.
Ferramentas relacionadas
- Conversor de timestamp Unix: converta as datas de execução de e para epoch.
- Formatador de log: confira nos logs se o job rodou no horário esperado.
- Logs, feature flags e observabilidade para QA: como acompanhar jobs agendados em produção.
Referências
- crontab(5) — manual do cronie: campos, regra do OU, macros e horário de verão.
- GitHub Docs — evento schedule
- Spring Framework — CronExpression
- Quartz — CronTrigger Tutorial
