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.