Inicio Apuntes FPApuntes DAWEjercicio Básico JavaScript: Saber que día era la fecha introducida por el usuario

Ejercicio Básico JavaScript: Saber que día era la fecha introducida por el usuario

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

El el post de hoy, vamos a practicar un poco JavaScript. En el ejercicio a realizar vamos a escribir un programa que pida al usuario su fecha de nacimiento (o cualquier otra fecha) en formato dd/mm/aaaa y que muestre como resultado el número de días transcurridos entre ambas fechas.

Para terminar de complicar un poco el ejercicio habrá que usar los métodos del objeto Date().

Primero haré el ejercicio sin un control estricto  de la fecha. En el segundo mediante un patrón, controlaremos que el formato de la fecha que el usuario ingresa es correcto. En caso de que lo sea, mostraremos un mensaje de error.

Bueno, explicado el programa … vamos a ello …

Ahora voy a solucionar un error que un usuario me ha comentado. Resulta que el código que se muestra anteriormente en este post no correspondía con el texto del enunciado. Ahora si va el código JavaScript con el que indicando una fecha podrás saber en que día de la semana cayó o caerá. El código es el siguiente:

//Recibe fecha en formato DD/MM/YYYY
function dia_semana(fecha){ 
    fecha=fecha.split('/');
    if(fecha.length!=3){
            return null;
    }
    //Array 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]; 
    //Array 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]; 
    //Array 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.
    var dia=fecha[0];
    //Módulo acumulado del mes especificado en la fecha recibida.
    var mes=fecha[1]-1;
    //Año especificado por la fecha recibida.
    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)];
}

//envíamos la fecha con formato dd/mm/aa
alert(dia_semana('29/04/2017'));

 

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

8 Comentarios

carlos 5 abril, 2017 - 5:15 PM

Solucionado, le añadí un prompt y todo perfecto. Muchas gracias de nuevo!! gran página!! directa a favoritos :)

Respuesta
sapoclay 5 abril, 2017 - 5:20 PM

Perfecto. Salu2.

Respuesta
carlos 5 abril, 2017 - 5:12 PM

Muchas gracias por la respuesta y la rapidez!! ¿Pero donde exactamente introduce el usuario la fecha?

Gracias!!

Respuesta
sapoclay 5 abril, 2017 - 5:17 PM

Hola. La rapidez ha sido casualidad XD. En cuanto a la fecha la pones en la llamada a la función dia_semana() que está dentro del alert() del final. Si quieres hacerlo más estético deberías pasar la fecha mediante un formulario. Espero haberte ayudado. Salu2.

Respuesta
carlos 5 abril, 2017 - 4:55 PM

Gracias a ti, sería genial si pudieras volver a publicarlo! :)

Respuesta
sapoclay 5 abril, 2017 - 5:06 PM

Solucionado. Lo he vuelto a publicar. Solo es la función que realiza el cálculo. Salu2 y gracias por el aviso y la visita.

Respuesta
carlos 5 abril, 2017 - 4:47 PM

Hola, primeramente gracias por tus apuntes. Justo estaba buscando este ejercicio, pero el ejercicio no corresponde con el enunciado. Compara entre dos fechas en vez de dar el dia de la semana cuando yo introduzco la fecha via prompt.

Gracias!

Respuesta
sapoclay 5 abril, 2017 - 4:54 PM

Hola Carlos. Tienes razón. En su día modifiqué el ejercicio para un amigo y me olvidé de volver a ponerlo como estaba :D. Gracias por el aviso. Salu2.

Respuesta
Resumen de privacidad
cookies entreunosyceros

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible.

La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal de ningún tipo.

Tienes toda la información sobre privacidad, derechos legales y cookies en nuestra página sobre la política de privacidad o en la página sobre nuestra política de cookies.

Cookies necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza las siguientes cookies adicionales:

- Mailchimp: Recordar si ya estás suscrito al boletín de noticias y sino ofrecértelo al salir.

- Accesibilidad: Para saber tus ajustes de accesibilidad en cada visita.

- Comentarios: Saber si has leído y aceptado nuestra política de privacidad a la hora de dejar un comentario en la web.

- Google Analytics: Localización para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

- Goggle Adsense: Anuncios personalizados según tu geolocalización y preferencias.

Dejar estas cookies activadas nos permite mejorar nuestra web.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.