<!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.
}
}
}