<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<script>
/**
* Documentado en http://lwp-l.com/s2379
*/
function isValidDate(day,month,year)
{ var dteDate;
month=month-1;
dteDate=new Date(year,month,day);
return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}
/**
* Funcion para validar una fecha
* Tiene que recibir:
* La fecha en formato español dd/mm/yyyy
* Devuelve:
* true o false
*/
function validate_fecha(fecha)
{ var patron=new RegExp("^([0-9]{1,2})([/])([0-9]{1,2})([/])(19|20)+([0-9]{2})$");
if(fecha.search(patron)==0)
{ var values=fecha.split("/"); if(isValidDate(values[0],values[1],values[2]))
{ return true;
}
}
return false;
}
function calcularDias()
{ var fechaInicial=document.getElementById("fechaInicial").value; var fechaFinal=document.getElementById("fechaFinal").value; var resultado="";
if(validate_fecha(fechaInicial) && validate_fecha(fechaFinal))
{ inicial=fechaInicial.split("/"); final=fechaFinal.split("/"); // obtenemos las fechas en milisegundos
var dateStart=new Date(inicial[2],(inicial[1]-1),inicial[0]);
var dateEnd=new Date(final[2],(final[1]-1),final[0]);
if(dateStart<dateEnd)
{ // la diferencia entre las dos fechas, la dividimos entre 86400 segundos
// que tiene un dia, y posteriormente entre 1000 ya que estamos
// trabajando con milisegundos.
resultado="La diferencia es de "+(((dateEnd-dateStart)/86400)/1000)+" días";
}else{ resultado="La fecha inicial es posterior a la fecha final";
}
}else{ if(!validate_fecha(fechaInicial))
resultado="La fecha inicial es incorrecta";
if(!validate_fecha(fechaFinal))
resultado="La fecha final es incorrecta";
}
document.getElementById("resultado").innerHTML=resultado; }
</script>
</head>
<body>
<form>
<p>Introduce la fecha inicial y final en formato español dd/mm/yyyy</p>
<input type="text" name="fechaInicial" id="fechaInicial" value="16/07/2014">
<input type="text" name="fechaFinal" id="fechaFinal" value="17/07/2014">
<input type="button" value="Calcular dias" onclick="calcularDias();">
</form>
<div id="resultado"></div>
</body>
</html>
Comentarios sobre la versión: Versión 1 (7)
/*** Documentado en http://lwp-l.com/s2379*/{}/*** Funcion para validar una fecha* Tiene que recibir:* La fecha en formato español dd/mm/yyyy* Devuelve:* true o false*/{{{}}}{{// obtenemos las fechas en milisegundos{// la diferencia entre las dos fechas, la dividimos entre 86400 segundos// que tiene un dia, y posteriormente entre 1000 ya que estamos// trabajando con milisegundos.}}}