Bom dia!
Estou com o seguinte problema: preciso trabalhar uma data com números inteiros, sejam eles:
int dia, mes, ano;
Após uma serie de incrementações/decrementações de dias, meses e anos, preciso criar um método getDiaSemana() que me retorne o dia da semana por extenso da data final.
Na minha apostila diz o seguinte:
[…] deve retornar o dia da semana, baseado no algoritmo abaixo:
A = o inteiro de [(12 - Mês) ÷ 10]
B = Ano - A
C = Mês + (12 x A)
D = o inteiro de (B ÷ 100)
E = o inteiro de (D ÷ 4)
F = 2 - D + E
G = o inteiro de (365,25 x B)
H = o inteiro de [30,6001 x (C + 1)]
I = F + G + H + Dia + 5
J = o resto de (I ÷ 7), onde 0=SAB 1=DOM 2=SEG 3=TER 4=QUA 5=QUI 6=SEX
E eu fiz isso aqui:
[code]/*
* Deve retornar o dia da semana
*/
public String getDiaSemana() {
//Algoritmo para descobrir o dia da semana
int a = ((12 - mes) / 10);
int b = ano - a;
int c = mes + (12 * a);
int d = b / 100;
int e = d / 4;
int f = 2 - d + e;
int g = (int) 365.25 * b;
int h = (int) (30.6001 * (c + 1));
int i = (int) ((f + g) + (h + dia) + 5);
int j = (int) (i % 7); //Resto de I por 7, onde 0=SAB, 1=DOM, 2=SEG, 3=TER, 4=QUA, 5=QUI, 6=SEX
//Testa o resultado e retorna
switch (j) {
case 0:
return "Sábado";
case 1:
return "Domingo";
case 2:
return "Segunda";
case 3:
return "Terça";
case 4:
return "Quarta";
case 5:
return "Quinta";
case 6:
return "Sexta";
default:
return "Erro ao tentar retornar o dia da semana";
}
}[/code]
Mas, ao fazer o teste com a data 24/10/2014, este método me retorna Sábado, sendo que o certo seria Sexta! Não consigo ver o erro do meu método, alguém de vocês consegue ?
Obrigado,
Jean