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

11 comentarios:

  1. Excelente trabajo, funciona perfecto y me ahorró horas de desarrollo, muy agradecido amigo!

    ResponderEliminar
  2. Gracias por el aporte.. Fue muy util

    ResponderEliminar
  3. GRACIAS!, me salvaste muchos problemas, desde VENEZUELA gracias

    ResponderEliminar
  4. Funcional, Excelente trabajo.. mil gracias

    ResponderEliminar
  5. creo que es mas facil con las funciones de javascript http://www.tutorialspoint.com/javascript/date_getutcday.htm

    ResponderEliminar
  6. no lo es, es mas facil con la funcion de kristian . Mil gracias!!

    ResponderEliminar
  7. Excelente, justo lo que estaba buscando. Mil gracias ;)

    ResponderEliminar