En el post de esta noche voy a dejar un pequeño programa en JavaScript. El programa que se pide es uno que pida al usuario una fecha inicial, en formato dd/mm/aaaa, y otra fecha final con el mismo formato. Como resultado final tendrá que obtenerse el número de días entre ambas fechas. Para realizarlo es obligatorio el uso de los métodos del objeto Date.
Para este ejercicio no se pide más control de errores que asegurarse que solo se toman dos caracteres en el caso de los días, otros dos en caso de los meses y cuatro en cuanto al año se refiere. En ningún momento se pide que se controle si son números o letras ni nada de eso, pero sería lo óptimo … si algún día tengo tiempo lo modificaré … y sino el que quiera que lo modifique y lo mejore (y si eso que lo comparte).
Calcular la diferencia en días entre dos fechas
<html> <head> <title>Días entre fechas</title> <script language="javascript"> fecha1=null; fecha2=null; var patron=/^(0?[1-9]|[12][0-9]|3[01])[\/](0?[1-9]|1[012])[\/](19|20)\d{2}$/;//patrón para la fecha1 fecha1=prompt("Escribe una fecha.\n Formato (dd/mm/aaaa)"); if ( !patron.test(fecha1)) { alert ("No has introducido un valor correcto.\n Valores posibles:\nDias; min[01], max[31].\nMeses; min[01], max[12].\nAnho: min[1900],max[2099]"); } else { var dia1= fecha1.substr(0,2); //tomamos los dos primeros valores de la fecha var mes1= fecha1.substr(3,2); //tomamos los dos siguiente valores var anyo1= fecha1.substr(6); //tomamos el año var patron=/^(0?[1-9]|[12][0-9]|3[01])[\/](0?[1-9]|1[012])[\/](19|20)\d{2}$/; //patrón para la fecha1 fecha2=prompt("Escribe una segunda fecha.\n Formato (dd/mm/aaaa)"); if ( !patron.test(fecha2)) { alert ("No has introducido un valor correcto.\n Valores posibles:\nDias; min[01], max[31].\nMeses; min[01], max[12].\nAnho: min[1900],max[2099]"); } else { var dia2= fecha2.substr(0,2);//tomamos los dos primeros valores de la fecha var mes2= fecha2.substr(3,2);//tomamos los dos siguiente valores var anyo2= fecha2.substr(6);//tomamos el año var nuevafecha1= new Date(anyo1+","+mes1+","+dia1); //instanciamos un objeto de Date como nuevafecha1 y le añadimos los datos de fecha1 var nuevafecha2= new Date(anyo2+","+mes2+","+dia2);//instanciamos un objeto de Date como nuevafecha2 y le añadimos los datos de fecha2 var Dif= nuevafecha2.getTime() - nuevafecha1.getTime(); //tomamos los milisegundos de cada una de las fechas y y realizamos la resta if (Dif<0) Dif*=-1; var dias= Math.floor(Dif/(1000*24*60*60)); //pasamos los milisegundos a días alert("Entre el "+dia1+"/"+mes1+"/"+anyo1+" y "+dia2+"/"+mes2+"/"+anyo2+" transcurren "+dias+" dias"); //ventana emergente con el resultado } } </script> </head> <body> <div align="center"><h1>Ejercicio 5. Diferencia entre fechas</h1></div> <div align='center'><input type='button' value='VOLVER ATRÁS' name='atras' onclick='history.back()'/></div> </body> </html>