Congruência de Zeller

Fonte: testwiki
Revisão em 22h28min de 11 de janeiro de 2025 por imported>Rhuan Pereira (Fórmula)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

Congruência de Zeller é um algoritmo criado por Christian Zeller para calcular o dia da semana de qualquer data nos calendários juliano ou gregoriano.

Fórmula

Para um calendário gregoriano, a congruência de Zeller é

h=(q+(m+1)2610+K+K4+J42J)mod7,

Já para o calendário juliano, ela é

h=(q+(m+1)2610+K+K4+5J)mod7,

em que

  • h é o dia da semana (0 = sábado, 1 = domingo, 2 = segunda, …)
  • q é o dia do mês
  • m é o mês (3 = março, 4 = abril, 5 = maio, …)
  • K é o ano do século (anomod100)
  • J é o século (ano/100) (por exemplo, para 1995 o século seria 19, ainda que na realidade o século seria XX)

Nota 1: Neste algoritmo, janeiro e fevereiro são contados como os meses 13 e 14 do ano anterior. Em outras palavras, dado um ano X qualquer, para calcular o dia da semana desse ano no mês de janeiro ou fevereiro, deve-se calcular como se o ano fosse X-1. Por exemplo: para saber o dia da semana do ano de 1995 de todos os meses de março a dezembro, usa-se a fórmula como está prescrita acima, mas para saber o dia da semana do mês de janeiro e fevereiro do ano de 1995, deve-se considerar K = 1994.

Nota 2: Para o dia do mês em ISO (1 = segunda, …), use d=((h+5)mod7)+1

Implementação em software

As fórmulas anteriores requerem a definição matemática da operação módulo, que significa que 2mod7=+5. Entretanto, a maioria das linguagens de programação implementam a função de resto, de forma que 2mod7=2. Portanto, para implementar a congruência de Zeller em um computador, as fórmulas devem ser alteradas para assegurar um numerador positivo. A forma mais simples de se fazer isso é substituir 2J por +5J e J por +6J. Assim, as fórmulas se tornam:

h=(q+(m+1)2610+K+K4+J4+5J)mod7,

para o calendário gregoriano e

h=(q+(m+1)2610+K+K4+5+6J)mod7,

para o calendário juliano.

Zeller usava aritmética decimal, e achou conveniente usar J & K para representar o ano. Mas usando um computador é mais simples lidar com o ano modificado Y usando Y, Y div 4, e para o calendário gregoriano também Y div 100 & Y div 400.

Ver também