🗓️ Caso você queira saber em que dia caiu uma data qualquer, utilize o Algoritmo de Zeller para descobrir…
O Algoritmo de Zeller é um método simples para calcular o dia da semana de uma data específica, sem a necessidade de bibliotecas ou funções de tempo. A ideia básica por trás do algoritmo é usar uma série de operações matemáticas para obter um valor que representa o dia da semana.
O algoritmo utiliza três variáveis principais: o dia do mês, o mês e o ano da data em questão. A partir dessas informações, ele realiza uma série de cálculos para obter o dia da semana correspondente.
✍️ A fórmula do Algoritmo de Zeller é a seguinte:
d = (dia + y + y/4 – y/100 + y/400 + (31*m)/12) % 7
Nessa fórmula:
- “dia” representa o dia do mês.
- “y” representa o ano.
- “m” representa o mês, sendo ajustado para que janeiro e fevereiro sejam tratados como o 13º e 14º meses do ano anterior.
O valor resultante “d” é o dia da semana, sendo representado como um número de 0 a 6, onde 0 representa o sábado, 1 representa o domingo e assim por diante.
⚠️ Embora o Algoritmo de Zeller seja uma maneira simples de calcular o dia da semana, é importante destacar que ele não leva em consideração as diferenças regionais nos sistemas de calendário e pode não ser tão preciso em datas muito antigas ou no futuro distante. Portanto, é mais adequado para uso em contextos simples e não críticos.
—
🧑💻Exemplo: Vamos aplicar o Algoritmo de Zeller para calcular o dia da semana para a data 08/02/1981.
Atribuindo os valores das variáveis:
- dia = 8
- mês = 14 (ajuste para tratar fevereiro como o 14º mês do ano anterior)
- ano = 1981
Aplicando a fórmula do Algoritmo de Zeller:
d = (8 + 1981 + 1981/4 – 1981/100 + 1981/400 + (31*14)/12) % 7
Simplificando os cálculos:
d = (8 + 1981 + 495 – 19 + 4 + 43) % 7 d = 2512 % 7 d = 1
O resultado “1” indica que o dia 08/02/1981 caiu em um domingo, de acordo com o Algoritmo de Zeller. Portanto, o dia da semana correspondente é o domingo.
—
☕ Programa em Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import java.util.Scanner; public class DiaDaSemana { public static void main(String[] args) { // Cria um objeto Scanner para receber a entrada do usuário Scanner scanner = new Scanner(System.in); // Solicita ao usuário que insira a data de nascimento System.out.print("Digite a data de nascimento (formato: dd/MM/yyyy): "); String dataNascimentoStr = scanner.nextLine(); // Obtém o dia, mês e ano da data de nascimento int dia = Integer.parseInt(dataNascimentoStr.substring(0, 2)); int mes = Integer.parseInt(dataNascimentoStr.substring(3, 5)); int ano = Integer.parseInt(dataNascimentoStr.substring(6)); // Calcula o dia da semana int a = (14 - mes) / 12; int y = ano - a; int m = mes + 12 * a - 2; int d = (dia + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12) % 7; // Array com os nomes dos dias da semana String[] diasSemana = {"Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"}; // Exibe o resultado System.out.println("É um(a) " + diasSemana[d] + "."); // Fecha o objeto Scanner scanner.close(); } } |
*Atualizado em 4 de julho de 2023