Interpretador de cron online
O interpretador de cron traduz uma expressão cron, como */15 9-17 * * 1-5, para uma frase em português e mostra os próximos horários em que ela vai executar, no seu fuso horário ou em UTC. Ele lê o cron padrão de 5 campos (minuto, hora, dia do mês, mês e dia da semana) e aponta o campo com erro. Tudo roda no seu navegador.
Exemplos
Próximas execuções
A leitura é feita no seu navegador. A ferramenta segue o cron padrão de 5 campos: minuto, hora, dia do mês, mês e dia da semana.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Digite ou cole a expressão cron, ou clique em um dos exemplos.
- Leia a explicação em português e confira o valor que cada campo assume.
- Veja as próximas 10 execuções e alterne entre o seu fuso horário e UTC.
Como funciona
Uma expressão cron tem cinco campos separados por espaço, nesta ordem: minuto (0 a 59), hora (0 a 23), dia do mês (1 a 31), mês (1 a 12, ou JAN a DEC) e dia da semana (0 a 6, ou SUN a SAT, em que 0 e 7 são domingo). Cada campo aceita *, que é qualquer valor, listas com vírgula (1,15), faixas (9-17) e passos (*/10, que é de 10 em 10).
Atalhos como @hourly, @daily, @weekly, @monthly e @yearly equivalem a expressões prontas, como 0 0 * * * para @daily. O @reboot roda uma vez quando o sistema inicia e não tem horários para calcular.
Quando o dia do mês e o dia da semana estão os dois restritos, o cron padrão executa se qualquer um dos dois casar. Assim, 0 0 13 * 5 roda todo dia 13 e também toda sexta-feira, e não só nas sextas-feiras 13. Se um dos dois começa com *, os dois precisam casar. O cron roda no fuso horário do servidor ou do agendador, então confira qual é o dele: o GitHub Actions, por exemplo, usa UTC.
Exemplo
Expressão: */15 9-17 * * 1-5
Campos: minuto */15, hora 9-17, dia do mês *, mês *, dia da semana 1-5
Significado: a cada 15 minutos, entre 09:00 e 17:59, de segunda-feira a sexta-feira.
Fonte: crontab(5): formato do arquivo crontab (manual do Linux)
Em código
Muitos agendadores, como o GitHub Actions, rodam o cron em UTC. Esta função converte um horário de Brasília (UTC-3) para a expressão em UTC, ajustando o dia da semana quando passa da meia-noite.
// Brasília é UTC-3 o ano todo (não há horário de verão desde 2019).
// diasDaSemana: '*' ou uma lista como '1,3,5' (0 = domingo).
function cronDeBrasilia(minuto, hora, diasDaSemana = '*') {
const horaUtc = hora + 3;
let dias = diasDaSemana;
// Das 21h em diante, em UTC já é o dia seguinte: o dia da semana anda junto
if (horaUtc >= 24 && dias !== '*') {
dias = dias.split(',').map((d) => (Number(d) + 1) % 7).join(',');
}
return `${minuto} ${horaUtc % 24} * * ${dias}`;
} # Brasília é UTC-3 o ano todo (não há horário de verão desde 2019).
# dias_da_semana: "*" ou uma lista como "1,3,5" (0 = domingo).
def cron_de_brasilia(minuto: int, hora: int, dias_da_semana: str = "*") -> str:
hora_utc = hora + 3
dias = dias_da_semana
# Das 21h em diante, em UTC já é o dia seguinte: o dia da semana anda junto
if hora_utc >= 24 and dias != "*":
dias = ",".join(str((int(d) + 1) % 7) for d in dias.split(","))
return f"{minuto} {hora_utc % 24} * * {dias}" <?php
// Brasília é UTC-3 o ano todo (não há horário de verão desde 2019).
// $diasDaSemana: '*' ou uma lista como '1,3,5' (0 = domingo).
function cronDeBrasilia(int $minuto, int $hora, string $diasDaSemana = '*'): string
{
$horaUtc = $hora + 3;
$dias = $diasDaSemana;
// Das 21h em diante, em UTC já é o dia seguinte: o dia da semana anda junto
if ($horaUtc >= 24 && $dias !== '*') {
$dias = implode(',', array_map(fn($d) => ((int) $d + 1) % 7, explode(',', $dias)));
}
return sprintf('%d %d * * %s', $minuto, $horaUtc % 24, $dias);
} Perguntas frequentes
Por que a minha expressão executa mais vezes do que eu esperava?
Provavelmente porque o dia do mês e o dia da semana estão os dois preenchidos. No cron padrão, basta um dos dois casar. Para executar só quando os dois casam, a solução comum é deixar um deles como * e checar a outra condição dentro do próprio script.
Qual a diferença entre cron de 5 e de 6 campos?
O cron padrão do Unix tem 5 campos. O Quartz e o Spring acrescentam os segundos no começo, e o AWS EventBridge usa 6 campos com o ano no fim e exige ? em um dos campos de dia. Esta ferramenta lê só o cron de 5 campos e avisa quando recebe outro formato.
*/7 significa mesmo a cada 7 minutos?
Quase. O passo reinicia a cada hora: roda nos minutos 0, 7, 14 e assim até 56, e volta ao minuto 0 da hora seguinte, só 4 minutos depois. Para intervalos exatos, use passos que dividem 60, como */5, */10, */15 e */30.
Em que fuso horário o cron roda?
No do servidor ou do serviço que executa o agendamento, que costuma ser UTC em serviços de nuvem e de CI. A ferramenta mostra os próximos horários no seu fuso e em UTC para você comparar.
O que significam 0 e 7 no dia da semana?
Os dois são domingo. Por isso 0-6 e 1-7 cobrem a semana inteira, e 1-5 vai de segunda a sexta.
Outras ferramentas que podem ajudar
- Conversor de Timestamp UnixConverta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp
- Testador de RegexTeste expressões regulares online: destaque dos casamentos, grupos e flags
- Conversor JSON para YAMLConverta JSON em YAML online, com indentação de 2 ou 4 espaços
- Formatador JSONFormate, indente, minifique e valide JSON online
- Comparador JSONCompare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada
- Conversor CSV para JSONConverta CSV em JSON online: detecta o separador (vírgula ou ponto e vírgula) e usa o cabeçalho como chaves