147. Dias calculados

   Como calcular mentalmente o dia da semana de uma data próxima e como usar a fórmula matemática de um monge alemão do século XIX para qualquer data após Outubro de 1582, anos bissextos e exemplos. 

 Geralmente, quando se pretende marcar um encontro que ocorrerá no mesmo dia da semana seguinte, refere-se «De hoje a 8 dias, encontramo-nos». Isto usa-se com o sentido de, se hoje for quarta-feira, se está a marcar um encontro para a quarta-feira seguinte. No entanto, imagine-se que é segunda-feira, dia 1. Então terça-feira é 2, quarta-feira é 3, quinta-feira é 4, sexta-feira é 5, Sábado é 6, Domingo é 7 e segunda-feira é 8. Passarem então exatamente 7 dias desde que o encontro foi marcado. Apesar de o intervalo de tempo entre uma 2.ª e outra 2.ª ser 8 dias (contando com ambas), o encontro é passado 7 dias. Se se marcar no dia 1, segunda-feira, um encontro para a outra segunda-feira, então o encontro é a 8 (1 + 7) e não a 9 (1 + 8). Parecerá de pouca importância esta questão. Afinal, quando se diz «de hoje a 8», sabe-se que é o mesmo dia da próxima semana. Mas a questão ganha nova importância quando se trata de marcar o dia exato do mês a que se refere a expressão. Por exemplo, se hoje for quarta-feira, dia 2, e se se marcar para a próxima quarta-feira, daqui a 8 dias, o dia do mês não será dia 10, será dia 9. A quarta-feira seguinte é dia 9.

   Apesar de este ser um facto óbvio, facilita muito a determinação de qual o dia da semana de um qualquer dia de um mês. A diferença entre o mesmo dia da semana é 7 (se for uma semana), 14 (se forem duas semanas), 21 (se forem três semanas) ou 28 (se forem quatro semanas). Para determinar o dia da semana, basta saber em que dia do mês e dia da semana se está. Depois é somar 7, 14, 21 ou 28 (de forma a ficar o mais próximo do dia que se pretende). Somam-se então dias (ou subtraem-se) e facilmente se acha o dia da semana. Em vez de andar febrilmente atrás do telemóvel ou de um calendário, em vez de se contar pelos dedos, mentalmente calcula-se com facilidade qual é esse dia.

♦Se hoje for dia 21 de Março, 6.ª-feira. Em que dia da semana é o Dia das Mentiras (1 de Abril)? Como 21 + 7 = 28, o dia 28 de Março é também uma 6ª-feira. Então 29 de Março é Sábado, dia 30 é Domingo e dia 31 é 2ª-feira. Então o dia das mentiras é numa 3.ª-feira.
Se hoje for dia 12 de Dezembro, 2ª-feira. Em que dia da semana é a Passagem do Ano?
Como 12 + 14 = 26, o dia 26 de Dezembro é também uma 2.ª- feira. Então 27 de Dezembro é 3.ª- feira, dia 28 é 4.ª-feira, dia 29 é 5.ª-feira, dia 30 é 6.ª-feira e 31 sábado. Então a passagem de ano é no sábado à noite.
♦ Se hoje for dia 1 de Setembro, Domingo. Que dia da semana será o dia 1 de Outubro?
Como 1 + 28 = 29, o dia 29 de Setembro é também um Domingo. Então 30 de Setembro é 2.ª-feira e dia 31 é 3.ª-feira. Então 1 de Outubro é 4.ª-feira.
Veja-se o artigo Dias primos sobre a origem dos nomes dos dias da semana nas línguas europeias.

   Por vezes há também alguns problemas com a memorização dos meses com 30 dias. Há várias opções incluindo contar pelos nós dos dedos e recorrer à cantilena infantil «30 dias tem Novembro, Abril, Junho e Setembro. De 28 só há um e o resto é de 31». A vantagem deste método é que basta saber 4 meses. O resto da cantilena é desnecessário. Mas claro que cada um memorizou em pequeno pelo método que lhe ensinaram. Sempre que quero saber quantos dias tem determinado mês repito para mim mesmo «Novembro, Abril, Junho, Setembro». Se for um destes tem 30 dias, se for Fevereiro tem 28 (ou 29 se for ano bissexto) e se não for nenhum dos 5 tem 31.
Ver o artigo Segundos extra sobre a necessidade e a origem dos anos bissextos. Há uma forma fácil de memorizar estes 4 meses usando uma mnemónica na forma de uma frase. Algo como NovAbre Junto às Sete.

   Também se pode querer saber se hoje é dia 4 de Novembro de 2018, Domingo. Em que dia da semana é o dia 1 de Abril de 2019? Ver o artigo Duplo dia para mais sobre o Dia das Mentiras. Como 4 + 28 = 32, então dia 32-2 = 30 de Novembro é sexta-feira e 1 de Dezembro é Sábado. Logo 1 + 28 = 29 de Dezembro é também Sábado, 30 de Dezembro é Domingo e 31 de Dezembro é 2.ª-feira. 1 de Janeiro é terça-feira e, como 1 + 28 = 29 de Janeiro é também 3.ª, dia 30 de Janeiro é 4.ª, dia 31 de Janeiro é 5.ª-feira. 1 de Fevereiro é 6.ª-feira e 1 + 28 = 29 de Fevereiro também seria 6.ª mas, como 2019 não é um ano bissexto (ver o artigo Segundos extra para saber porquê), 1 de Março é que é sexta-feira. 1 + 28 = 29, o dia 29 de Março é também sexta-feira, 30 é Sábado e 31 é Domingo. O dia 1 de Abril de 2019 é no dia da semana seguinte, segunda-feira.

   Mas, por diversas vezes acontece ser necessário saber-se qual o dia da semana em que calha (ou calhou) determinado dia do mês de um qualquer ano, não apenas o anterior ou seguinte. Por exemplo para determinar em que dia da semana se nasceu ou em que dia da semana determinado feriado ocorrerá. Ou em que exato dia da semana foi o 25 de Abril de 1976 (5ª-feira), em que dia da semana nasceu alguém sabendo a sua data de nascimento. Por exemplo, Fernando Pessoa nasceu em 13 de Junho de 1888. Em que dia da semana foi (quarta-feira)? Haverá alguma forma de calcular o dia da semana sem andar a procurar por calendários? Anteriormente falou-se de uma forma de determinar o dia da semana de uma determinada data, tendo como referência um dia de que se conheça a posição na semana. Mas o facto de requerer o conhecimento de uma data específica e da sua localização na semana impede (pela morosidade dos cálculos ou desconhecimento dos dias da semana) a sua aplicação a datas afastadas dos anos mais próximos.

   Mas, usando uma regra chamada Regra de Zeller. Este regra foi criada, em 1883, pelo reverendo alemão Julius Christian Johannes Zeller, e com ela é possível calcular com exatidão o dia da semana de qualquer data, bastando saber o dia, o mês e o ano (no calendário Gregoriano que usamos) após Outubro de 1582 (quando iniciou). Zeller nasceu em 1822 e morreu em 1899. Foi um estudioso de Matemática, Geografia e de Teologia. Em 1883, desenvolveu duas fórmulas, uma para o calendário Juliano e outra para o calendário Gregoriano. Para o nosso calendário, a fórmula é a seguinte
f = d+INT((13×m - 1)/5)+a+INT(a/4)+INT(s/4)-2×s

   Nesta fórmula, adaptada ao Português em termos dos nomes das variáveis usadas, d é o dia do mês dia, m é o número do mês, s é os primeiros dois dígitos do ano (o século) e a é os últimos dois dígitos do ano. Para o cálculo deste valor é necessário também conhecer a fórmula matemática aqui designada por INT que é simplesmente a parte inteira do número (a função a que também se chama TRUNCAR). É diferente do arredondamento pois, por exemplo, int (1,45) = 1 ( = arredondar 1,45) mas int (4,51) = 4 (mas arredondar 4,51 = 5) ou int (5/2) = int (2,5) = 2 (mas arredondar 2,5 = 3). Após o cálculo de f, divide-se de forma inteira esse valor por 7 e o resto da divisão indica o dia da semana em que a data se situa. Em algumas aplicações, o cálculo do resto quando o valor é negativo poderá dar um resto errado. Caso o valor seja negativo, deve-se então somar 7. Soma-se ao resultado final 1. Se esse valor final for 1 o dia da semana é domingo, se for 2 é segunda-feira,… , se for 6 é sexta-feira e se for 7 é sábado.

   Verifique-se a aplicação da fórmula a uma data específica. O dia 31 de Dezembro de 2005 foi num sábado. Use-se a fórmula neste caso para a verificar. Para evitar a questão do dia extra que Fevereiro tem nos dias bissextos, para usar esta fórmula o ano começa em Março (como faziam os Romanos). Assim Março é 1, Abril é 2, Maio é 3,… , Novembro é 9 e Dezembro é 10. Janeiro é o mês 11 do ano anterior e Fevereiro é o mês 12 do ano anterior. Então a data de que procuramos o dia da semana terá d = 31, m = 10, s = 20, a = 05
f = 31 + int((13*10 – 1)/5) + 5 + int(5/4) + int(20/4) – 2*20 = = 31 + int ((130 – 1)/5) + 5 + int(1,25) + int(5) – 40 = = 31 + int(129/5) + 5 + 1 + 5 – 40 = = 31 + int(25,8) + 5 + 1 + 5 – 40 = = 31 + 25 + 5 + 1 + 5 – 40 = = 27 Como 27 = 7*3 + 6, a divisão de 27 por 7 dá resto 6. Como é um número positivo soma-se 1. 6 + 1 = 7.
O dia da semana é o sétimo. É Sábado.

   Outro exemplo, o dia 18/02/2005.
d = 18; m = 12; (o ano começa em Março e Fevereiro é 12), s = 20; a = 04; (como o mês é Fevereiro, para a fórmula é o ano anterior). f = 18 + int((13×12 – 1)/5) + 4 + int(4/4) + int(20/4) – 2×20 = 18 + int ((156 – 1)/5) + 4 + int(1) + int(5) – 40 = 18 + int(155/5) + 4 + 1 + 5 – 40 = 18 + int(31) + 4 + 1 + 5 – 40 = 18 + 31 + 4 + 1 + 5 – 40 = 19. Como 19 = 7×2 + 5, a divisão de 32 por 7 dá resto 5. Como é um número positivo soma-se 1. 5 + 1 = 6O dia da semana foi sexta-feira.

   A fórmula necessita de um pouco de familiarização para ser usada facilmente. Mas a sua utilidade é maior na programação de computadores (ou de outros aparelhos programáveis). É fácil, usando estas regras, criar programas informáticos para, introduzindo uma data, obter-se o dia da semana. Há vários programas para diversas linguagens. Numa folha de cálculo,é possível calcular o dia da semana de uma determinada data.

   Mas pode-se usar a Regra de Zeller numa folha de cálculo. O dia está na célula A1, o mês está na célula B1 e o ano na célula C1. Pode então usar-se
=RESTO((A1+TRUNCAR((13*(SE(B1-2>0;B1-2;B1+10))-1)/5)+(SE((SE(B1-2>0;B1-2;B1+10))>10;C1-(TRUNCAR(C1/100))*100-1;C1-(TRUNCAR(C1/100))*100))+TRUNCAR((SE((SE(B1-2>0;B1-2;B1+10))>10;C1-(TRUNCAR(C1/100))*100-1;C1-(TRUNCAR(C1/100))*100))/4)+TRUNCAR((TRUNCAR(C1/100))/4)-2*(TRUNCAR(C1/100)));7)+1