Calculadora da congruência de Zeller
Em 25 de julho de 2026 cai um sábado: a congruência de Zeller soma 25, 20, 26, 6, 5 e −40 até chegar a 42, cujo resto na divisão por 7 é 0, o código do sábado. Cada passo aparece para refazer à mão. 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
- Data
- 2026-07-25
- Ano
- 2.026
- Mês
- 7
- Dia
- 25
- Dia da semana
- 6
Uma calculadora da congruência de Zeller transforma uma única data de calendário gregoriano ISO no nome do dia da semana executando a fórmula clássica de aritmética modular e mostrando cada termo intermediário. Informe uma data como YYYY-MM-DD; a ferramenta valida se o dia existe no calendário —incluindo as regras de fevereiro bissexto—, aplica o deslocamento de mês de Zeller para janeiro e fevereiro, constrói as variáveis de século e ano-dentro-do-século K e J, avalia os termos de piso, reduz a soma módulo sete e mapeia h para nomes de sábado a sexta mais números de dia da semana ISO. Estudantes que aprendem algoritmos de calendário, professores que preparam exemplos resolvidos e desenvolvedores que escrevem testes unitários precisam do mesmo caminho transparente em vez de uma biblioteca Date de caixa-preta.
O que a congruência de Zeller calcula e por que os passos importam
A congruência de Zeller é uma fórmula modular fechada que mapeia um triple de calendário gregoriano —ano, mês e dia do mês— a um índice de dia da semana sem consultar uma tabela de calendário. Na forma gregoriana comum usada aqui, o dia do mês é q, o mês é renumerado de modo que março é três e fevereiro é catorze do ano anterior, K é o ano dentro do século e J é o século de base zero, piso do ano sobre cem.
A fórmula é h igual à soma de q, o piso de treze vezes m mais um sobre cinco, K, o piso de K sobre quatro, o piso de J sobre quatro, e menos duas vezes J, tudo módulo sete. O h resultante usa a convenção de origem sábado: zero significa sábado, um domingo, dois segunda, e assim até seis para sexta.
Essa convenção não é a mesma dos números de dia da semana ISO-8601, por isso esta ferramenta também converte h em segunda-igual-a-um até domingo-igual-a-sete e em um índice de origem domingo de zero a seis para quem precisa desses codings. Mostrar cada termo de piso e a soma bruta antes do módulo é o ponto pedagógico: um aprendiz pode recomputar ⌊13(m+1)/5⌋ à mão e afirmar que os passos publicados batem. Folhas de sala, livros de algoritmos e drills de entrevista de código dependem dessa transparência.
O caminho de checagem também rejeita datas que não são dias reais de calendário, porque a fórmula de Zeller assume um dia gregoriano genuíno; alimentá-la com 2023-02-29 inventaria um dia da semana para um dia que nunca existiu.
Dicas práticas, limites e buscas relacionadas
Prefira enviar uma string ISO estrita em vez de prosa livre; o parser não aceita nomes de mês, barras nem ordem europeia de dia primeiro. Ao ensinar, emparelhe uma data de meio de ano como 2026-07-25 com um exemplo de janeiro para que os alunos vejam o decremento de ano e o deslocamento de mês mais doze nos passos.
Mantenha os anos dentro da faixa publicada de um a nove mil novecentos e noventa e nove para que a matemática de séculos fique simples e coerente com os tetos de datas irmãs. Esta página mira quem busca uma calculadora da congruência de Zeller, um algoritmo de dia da semana passo a passo ou uma fórmula modular de calendário online; não é um conversor histórico completo de transições juliano-gregoriano, nem um contador de dias úteis, nem uma ferramenta de dia da semana de caixa-preta que esconde a aritmética.
Prefira uma calculadora mais simples de dia da semana quando só precisar do nome sem intermediários de Zeller; prefira esta capacidade quando o objetivo educacional é a congruência em si.
Casos de uso
Exemplos resolvidos de aritmética modular em sala
Professores projetam uma data, percorrem cada termo de piso de Zeller no array steps e deixam os alunos verificar h e o nome do dia antes da entrega da lição.
Documentação de algoritmos e preparação para entrevistas
Candidatos comparam sua congruência escrita à mão com q, m, K, J, soma bruta e h publicados sem depender de bibliotecas Date da linguagem.
Perguntas frequentes
O que é a congruência de Zeller?
Uma fórmula de aritmética modular que calcula o dia da semana de uma data gregoriana a partir do dia, do mês renumerado, do ano-dentro-do-século K e do século J, sem consultar uma tabela de calendário.
O que h significa no resultado?
h é o índice de dia da semana de Zeller: 0 = sábado, 1 = domingo, 2 = segunda, …, 6 = sexta.
Por que janeiro vira o mês 13?
Zeller trata janeiro e fevereiro como os meses 13 e 14 do ano anterior para que o termo de mês da fórmula permaneça contínuo de março a fevereiro.
O que acontece com 2023-02-29?
Aquele dia não é uma data gregoriana válida (2023 não é bissexto).
A calculadora da congruência de Zeller é grátis?
A ferramenta do navegador é gratuita e roda localmente.
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/zeller-weekday \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-07-25"}'const res = await fetch("https://api.kit.forhosting.com/date/zeller-weekday", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2026-07-25"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/zeller-weekday",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2026-07-25"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/zeller-weekday", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2026-07-25"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2026-07-25"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/zeller-weekday", 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
{
"date": "2026-07-25"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.zeller_weekday",
"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
year_min | 1 |
year_max | 9999 |
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
Strings inválidas, meses impossíveis e 29 de fevereiro não bissexto devolvem um erro invalid_input claro em vez de uma resposta errada silenciosa. O caminho é aritmética inteira determinística pura —sem rede, sem sementes aleatórias, sem objetos Date de relógio de parede—, de modo que o executor gratuito do navegador e a API pré-paga devolvem o mesmo JSON sempre que você a chama.
Como chamar a API e o que volta
Os anos devem estar entre um e nove mil novecentos e noventa e nove inclusive. O dia deve existir naquele mês sob as regras bissextas gregorianas prolépticas —fevereiro tem vinte e nove dias só quando o ano é divisível por quatro, exceto anos seculares não divisíveis por quatrocentos. Envie um corpo JSON com um campo de string obrigatório: date (aliases iso_date, value e day) exatamente na forma YYYY-MM-DD com ano de quatro dígitos e mês e dia de dois dígitos. Em caso de sucesso a resposta ecoa a data canônica, ano, mês e dia, define day_name e day_name_short com os rótulos ingleses do dia da semana, define iso_weekday, day_of_week e day_number com o código ISO de segunda-igual-a-um até domingo-igual-a-sete, define weekday_0_sunday com o índice de origem domingo, e publica os intermediários brutos de Zeller zeller_h, zeller_q, zeller_m, zeller_Y, zeller_K e zeller_J junto com formula, h_meaning, leap_year, message e um array ordenado steps que percorre o deslocamento de janeiro–fevereiro, cada termo de piso, a soma bruta e o mapeamento final de nomes. Validação falha —campos ausentes, valores não string, formato errado, anos fora de faixa, meses ou dias impossíveis— devolve invalid_input e nunca é cobrada. O preço é um US$ 0,002 fixo por requisição bem-sucedida com unidade item e preço unitário marginal zero.
Dicas práticas, limites e buscas relacionadas
Confira um sábado ou segunda conhecido contra um calendário impresso e confirme que zeller_h e iso_weekday batem com os mapeamentos documentados. Tarefas falhas que devolvem invalid_input não consomem saldo pré-pago, o que mantém baratos scripts exploratórios quando aprendizes deliberadamente tentam 2023-02-29.
Casos de integração
Testes unitários de implementações de calendário
Gere intermediários de Zeller conhecidos e rejeições de datas de calendário inválidas como fixtures determinísticos para valores esperados em katas de código.