quarta-feira, 28 de março de 2018

Método para calcular o dia da semana de uma data qualquer

Em qual dia da semana você nasceu? Você já se fez essa pergunta? Já tentou calcular de cabeça? Não é uma tarefa trivial. Como um ano tem 52 semanas e 1 dia (ou 2 dias), uma mesma data cai em dias da semana diferentes ao longo dos anos, o que impõe dificuldades ao cálculo.

O jornal semanal "A Luz", que circulava antigamente no Rio de Janeiro, divulgou uma receita relativamente simples para fazer essa conta. Trata-se do recorte a seguir, publicado no dia 1º de outubro de 1871 (um domingo):
A Luz (Rio de Janeiro), 01/10/1871.

A receita de "A Luz" funciona, mas somente para o século em que foi publicada, isto é, entre 1º de janeiro de 1801 (uma quinta-feira) e 31 de dezembro de 1900 (uma segunda-feira). Para determinar o dia da semana de uma data do século XX , do século XXI ou do século XXII, é necessário fazer uma adaptação à tabela:

Para datas do século XX (entre 1º de janeiro de 1901 e 31 de dezembro de 2000):
Quarta-feira ... 0
Quinta-feira ... 1
Sexta-feira ... 2
Sábado ... 3
Domingo ... 4
Segunda-feira ... 5
Terça-feira ... 6

Para datas do século XXI (entre 1º de janeiro de 2001 e 31 de dezembro de 2100):
Terça-feira ... 0
Quarta-feira ... 1
Quinta-feira ... 2
Sexta-feira ... 3
Sábado ... 4
Domingo ... 5
Segunda-feira ... 6

Para datas do século XXII (entre 1º de janeiro de 2101 e 31 de dezembro de 2200):
Domingo ... 0
Segunda-feira ... 1
Terça-feira ... 2
Quarta-feira ... 3
Quinta-feira ... 4
Sexta-feira ... 5
Sábado ... 6

Eu nasci no dia 7 de dezembro de 1984. Seguindo o método, devemos somar 83 com 20 com 5 com 342 (lembrando que 1984 foi bissexto), resultando em 450; dividindo por 7, dá 64, com resto 2. Olhando a tabela do século XX, descobrimos que nasci numa sexta-feira. Está certo.

O Fluminense Football Club conquistou o seu terceiro Campeonato Brasileiro no dia 5 de dezembro de 2010. Seguindo o método, devemos somar 9 com 2 com 5 com 339 (lembrando que 2010 não foi bissexto), resultando em 355; dividindo por 7, dá 50, com resto 5. Olhando a tabela do século XXI, descobrimos que foi um domingo. Está certo.

Algumas regiões do Brasil presenciarão um eclipse total do Sol no dia 8 de janeiro de 2122. Seguindo o método, devemos somar 21 com 5 com 5 com 8, resultando em 39; dividindo por 7, dá 5, com resto 4. Olhando a tabela do século XXII, descobrimos que será uma quinta-feira. Está certo, novamente.

A internet tem diversos outros métodos para calcular o dia da semana, explicados em detalhe em outros sites. Não sei se são mais ou menos eficientes que o apresentado aqui. Se o leitor conhecer algum método, sinta-se convidado a explicá-lo, nos comentários.

PCFilho

13 comentários:

  1. Gostei do método. Eu adoro fazer essas contas de cabeça. Uso um truque chamado de "datas do fim do mundo": em um determinado ano, os dias 4/4, 9/5, 6/6, 11/7, 8/8, 5/9, 10/10, 7/11 e 12/12 caem sempre no mesmo dia da semana.

    Outro truque, esse mais óbvio, é que cada data "anda" um dia da semana por ano, ou dois quando há um 29/02 no caminho.

    Gostei desse método explicado no post, porque é mais direto, não precisa usar datas de referência como eu faço.

    ResponderExcluir
    Respostas
    1. Gostei dessas "datas do fim do mundo". Obrigado por compartilhar esses "truques" aqui. :)

      Excluir
    2. Macete que um amigo meu me mostrou hoje:

      Dia da semana = dia + Chave do mês + Chave do ano - maior múltiplo de 7

      1 é domingo, 2 é segunda, 3 é terça ... 0 é sábado.

      Aí "basta" decorar as chaves dos meses e dos anos.

      Chaves dos meses:
      Janeiro 1
      Fevereiro 4
      Março 4
      Abril 0
      Maio 2
      Junho 5
      Julho 0
      Agosto 3
      Setembro 6
      Outubro 1
      Novembro 4
      Dezembro 6

      Chaves dos anos:
      2004 (bissexto) 4
      2005 5
      2006 6
      2007 0
      2008 (bissexto) 2
      2009 3
      2010 4
      2011 5
      2012 (bissexto) 0
      2013 1
      2014 2
      2015 3
      2016 (bissexto) 5
      2017 6
      2018 0

      Assim, 30 de março de 2018 é sexta-feira, porque:
      30 + 4 + 0 - 28 = 6

      Excluir
    3. Opa, interessante, obrigado por compartilhar esse algoritmo aqui!

      O método até parece simples; porém, envolve decoreba demais pro meu gosto. As chaves dos anos até têm um padrão razoável, mas pra calcular de um ano distante dá um trabalho grande, e passível de erro, principalmente se o cálculo for mental. Quanto às chaves dos meses, tem que arrumar um jeito de decorar essa sequência.

      Uma curiosidade: o último passo é igual ao do método do post: subtrair o maior múltiplo de 7 possível é equivalente a tirar o resto da divisão por 7. :)

      Excluir
    4. Exatamente. Ainda prefiro o método do jornal do século 19, que é só decorar os passos e tomar cuidado na contagem dos dias. Andei testando e consegui calcular várias datas, demorando no máximo dois minutos.

      Você postou uma preciosidade. Obrigado!

      Excluir
    5. Não sou o único doente a ficar calculando datas antigas, então. hehehe!

      Excluir
    6. Não mesmo, tens outros malucos te acompanhando na maluquez.

      Para datas mais próximas da atual, o segundo método pode ser bem eficaz.

      Por exemplo, 6 de março de 2003, passo a passo: somar 6 com a chave do mês (4) com a chave do ano (2, já que 2004 é bissexto e tem código 4). 12 dividido por 7, o resto é 5. O dia foi uma quinta-feira.

      Excluir
    7. Sim. Para datas próximas, a conta fica realmente mais simples. Agora, se o ano for 1951, descobrir a "chave" dá muito trabalho...

      Excluir
  2. That's pretty good, but there is a simpler formula, one that doesn't require any tables to memorize and for which a given result means the same for a date in any century. It is based on an algorithm devised by 18th-century mathematician Karl Friedrich Gauss for calculating the day of the week for 1 January of any year and is described below.

    First, if the date is in January or February, use (year - 1) as the year number. Otherwise, use the year as the year number. Using this number, calculate the following values:
    [Remainder of (year number/4)]*5
    [Remainder of (year number/100)]*4
    [Remainder of (year number/400)]*6

    Second, determine the number of the month, taking March as the first month. For instance, if the date is in July, use the number 5. (This means that January is 11 and February is 12.) Using this number, calculate the following value:
    int(2.6 * month number - .2)

    Lastly, use the day as the day number.

    Now, add the four derived values and the day number together and divide by 7. The remainder gives the day of the week:

    0 = Sunday
    1 = Monday
    2 = Tuesday
    3 = Wednesday
    4 = Thursday
    5 = Friday
    6 = Saturday

    Here's what this looks like for 4 July 1776 (the date the U.S. Declaration of Independence was signed):
    Year number = 1776
    Month number = 5
    Day number = 4
    5 * [Remainder of (1776/4)] = 5 * 0 = 0
    4 * [Remainder of (1776/100)] = 4 * 76 = 304
    6 * [Remainder of (1776/400)] = 6 * 176 = 1056
    int(2.6 * 5 - .2) = int(12.8) = 12
    0 + 304 + 1056 + 12 + 4 = 1376
    Remainder of (1376/7) = 4
    Result: Thursday

    And for 20 January 2017 (the inauguration date of U.S. President Donald Trump):
    Year number = 2016
    Month number = 11
    Day number = 20
    5 * [Remainder of (2016/4)] = 5 * 0 = 0
    4 * [Remainder of (2016/100)] = 4 * 16 = 64
    6 * [Remainder of (2016/400)] = 6 * 16 = 96
    int(2.6 * 11 - .2) = int(28.4) = 28
    0 + 64 + 96 + 28 + 20 = 208
    Remainder of (208/7) = 5
    Result: Friday

    And for 15 April 1982 (my birth date):
    Year number = 1982
    Month number = 2
    Day number = 15
    5 * [Remainder of (1982/4)] = 5 * 2 = 10
    4 * [Remainder of (1982/100)] = 4 * 82 = 328
    6 * [Remainder of (1982/400)] = 6 * 382 = 2292
    int(2.6 * 2 - .2) = int(5) = 5
    10 + 328 + 2292 + 5 + 15 = 2650
    Remainder of (2650/7) = 4
    Result: Thursday

    It can be verified that the three above results are correct.

    ResponderExcluir
  3. Gostaria de fazer uma pergunta: que dia da semana os três magos se encontraram com o menino Jesus

    ResponderExcluir

Regras para postar comentários:

I. Os comentários devem se ater ao assunto do post, preferencialmente. Pense duas vezes antes de publicar um comentário fora do contexto.

II. Os comentários devem ser relevantes, isto é, devem acrescentar informação útil ao post ou ao debate em questão.

III. Os comentários devem ser sempre respeitosos. É terminantemente proibido debochar, ofender, insultar e/ou caluniar quaisquer pessoas e instituições.

IV. Os nomes dos clubes devem ser escritos sempre da maneira correta. Não serão tolerados apelidos pejorativos para as instituições, sejam quais forem.

V. Não é permitido pedir ou publicar números de telefone/Whatsapp, e-mails, redes sociais, etc.

VI. Respeitem a nossa bela Língua Portuguesa, e evitem escrever em CAIXA ALTA.

Os comentários que não respeitem as regras acima poderão ser excluídos ou não, a critério dos moderadores do blog.