Como calcular o dia da semana de qualquer ano

Passo 1

Prepare a informação. Para executar o algoritmo é necessário especificar um dia, um mês e um ano. Isso lista os meses de três a 14, começa em março e termina em fevereiro. Isso garante que os dias bissextos sempre caiam no final do ano, o que simplifica os cálculos: se o mês <3 então, mês = mês + 12.

Passo 2

Calcule o século e o ano. A década de 1950 deve ser 19, apesar do fato de que este número reconhece o século XX: século = base (ano / 100) = anoSiglo = ano mod 100.

Passo 3

Encontre o dia da semana em que o século começou: Dia da semana = base (século / 4) + 5 * século. Zeller determinou que esse cálculo, do módulo sete, dará o dia da semana em que qualquer século começou. O cálculo de base considera o fato de que a cada quatro séculos não há dia bissexto.

Passo 4

Calcule o dia da semana em que o ano começou: daySweden = weekDay + yearSlighover + base (yearSiglo / 4). Com exceção dos anos bissextos, a cada ano você deve começar o próximo dia da semana que começou no ano anterior. O cálculo, do módulo sete, indica o dia da semana do primeiro dia do ano.

Passo 5

Encontre o dia da semana em que o mês começou: weekDay = weekDay + base ((month + 1) * 26) / 10). Este é o coração do algoritmo de Zeller, que observou que este cálculo é capaz de determinar em que dia da semana um mês começará. Com essa fórmula, a necessidade de tabelas de pesquisa para determinar a duração de cada mês é eliminada.

Passo 6

Adicione o dia do mês e calcule o dia da semana em que a data cai: weekDay = weekDay + daySunday = weekDay mod 7.

Passo 7

Converter a data para os padrões da Organização Internacional para Padronização: a data da semana; o dia da semana começa com segunda-feira = 1. Com o algoritmo de Zeller, o sábado é usado = 0. Para a conversão, é usada a aritmética modular simples: weekDay = ((weekDay + 5) mod 7) + 1.