martes, 2 de agosto de 2011

Código JavaScript para saber el día de la semana dada una fecha.

El código es el siguiente, lo programé utilizando como guía las indicaciones de Wikipedia y algo de prueba y error para terminarlo. Espero les sea tan útil como a mi.

//Recibe fecha en formato DD/MM/YYYY
function dia_semana(fecha){ 
    fecha=fecha.split('/');
    if(fecha.length!=3){
            return null;
    }
    //Vector para calcular día de la semana de un año regular.
    var regular =[0,3,3,6,1,4,6,2,5,0,3,5]; 
    //Vector para calcular día de la semana de un año bisiesto.
    var bisiesto=[0,3,4,0,2,5,0,3,6,1,4,6]; 
    //Vector para hacer la traducción de resultado en día de la semana.
    var semana=['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];
    //Día especificado en la fecha recibida por parametro.
    var dia=fecha[0];
    //Módulo acumulado del mes especificado en la fecha recibida por parametro.
    var mes=fecha[1]-1;
    //Año especificado por la fecha recibida por parametros.
    var anno=fecha[2];
    //Comparación para saber si el año recibido es bisiesto.
    if((anno % 4 == 0) && !(anno % 100 == 0 && anno % 400 != 0))
        mes=bisiesto[mes];
    else
        mes=regular[mes];
    //Se retorna el resultado del calculo del día de la semana.
    return semana[Math.ceil(Math.ceil(Math.ceil((anno-1)%7)+Math.ceil((Math.floor((anno-1)/4)-Math.floor((3*(Math.floor((anno-1)/100)+1))/4))%7)+mes+dia%7)%7)];
}
Para invocar a la función, basta con un llamado simple y enviar la fecha en el formato 'DD/MM/YYYY'. Un ejemplo de su uso se muestra a continuación.
alert(dia_semana('27/03/2082'));
Esperando sea de utilidad. Author: Ing. Kristian Camilo Moreno