Calcular dia de semana en que naci ???

Calcular dia de semana en que naci ???




Bueno aqui les dejo este programa capaz de calcular el dia de nacimiento o dia de alguna fecha importante de acuerdo a los datos que se le den.


Descargar
El programa esta hecho de acuerdo al calendario gregoriano y con esta formula:
d = ((A - 1) % 7 + \left ( \frac{A-1}{4} - \left ( 3 \cdot \frac{\frac{A - 1}{100} + 1}{4}\right ) \right ) % 7 + M + D % 7) % 7 \,\!
NOTA:Esta formula obtenida de la wikipedia esta mal en lo que a parentesis se refiere,entonces tienen que agregarselos antes del tres y despues de la segunda fraccion.


Donde "d" va a ser un vector con los dias de la semana , el domingo esta en la posicion 0.
A = anio.
M = dos vectores dependiendo si el anio es bisiesto o no con numeros que representan al mes para cada anio.

Mes E F M A M J J A S O N D

ANl 0 3 3 6 1 4 6 2 5 0 3 5

ABi 0 3 4 0 2 5 0 3 6 1 4 6

ANl = Anio normal
ABi = Anio bisiesto

D = dia.


Aplicando el proceso adecuado se puede obtener el dia con respecto a la fecha dada.


Aqui les dejo explicado lo mas importante del programa:

public void Calcular(int dia,int mes,int an){

if( ((an%4)==0)&&((an%100)!=100)||((an%400)==0) ){ // ver si anio es
//bisiesto
int a = (an-1)%7;
a = a + ( (((an-1) / 4) - ( 3 * ( ( ( (an-1) / 100) +1) / 4) )) ) % 7;
a = a + AnioBisiesto[mes];
a = a + (dia%7);
a = a%7;


jTextField1.setText(""+Dias[a]);

}else{

int a = (an-1)%7;
a = a + ( (((an-1) / 4) - ( 3 * ( ( ( (an-1) / 100) +1) / 4) )) ) % 7;
a = a + AnioNormal[mes];
a = a + (dia%7);
a = a%7;

jTextField1.setText(""+Dias[a]);

}

}


Como ven es un proceso demasiado sencillo que pueden hacer para calcular un dia en especifico o para implementarlo con algo mas.


Saludos........8)

0 comentarios: