Buenas!
Tengo un formulario que recibe 2 fechas (fecha nacimiento y fecha registro) y necesito restar estas dos fechas para obtener la edad de una persona (no solo restar los años, hay que tener en cuenta el día mes y año para obtener la fecha correcta).
Ya tengo el código en JS que obtiene la EDAD, pero solo tiene en cuenta la fecha de nacimiento. La fecha de "hoy" toma la fecha actual, y necesito que coja otra variable también del formulario.
Además, el JS que tengo funciona para fechas en formato YYYY-MM-DD, y necesito que funcione para fechas en formato DD-MM-YYYY
Estos son los datos de mi formulario
- INPUT Fecha de nacimiento: p101ifechanac
- INPUT Fecha de registro: p101dfechaingreso
- INPUT para mostrar resultado: p101iedad
Mis funciones JS:
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()));
}
function validate_fecha(fecha)
{
var patron=new RegExp("^(19|20)+([0-9]{2})([-])([0-9]{1,2})([-])([0-9]{1,2})$");
if(fecha.search(patron)==0)
{
var values=fecha.split("-");
if(isValidDate(values[2],values[1],values[0]))
{
return true;
}
}
return false;
}
function calcularEdad()
{
var fecha=document.getElementById("p101ifechanac").value;
if(validate_fecha(fecha)==true)
{
// Si la fecha es correcta, calculamos la edad
var values=fecha.split("-");
var dia = values[2];
var mes = values[1];
var ano = values[0];
// cogemos los valores actuales
var fecha_hoy = new Date();
var ahora_ano = fecha_hoy.getYear();
var ahora_mes = fecha_hoy.getMonth()+1;
var ahora_dia = fecha_hoy.getDate();
// realizamos el calculo
var edad = (ahora_ano + 1900) - ano;
if ( ahora_mes < mes )
{
edad--;
}
if ((mes == ahora_mes) && (ahora_dia < dia))
{
edad--;
}
if (edad > 1900)
{
edad -= 1900;
}
// calculamos los meses
var meses=0;
if(ahora_mes>mes)
meses=ahora_mes-mes;
if(ahora_mes<mes)
meses=12-(mes-ahora_mes);
if(ahora_mes==mes && dia>ahora_dia)
meses=11;
// calculamos los dias
var dias=0;
if(ahora_dia>dia)
dias=ahora_dia-dia;
if(ahora_dia<dia)
{
ultimoDiaMes=new Date(ahora_ano, ahora_mes, 0);
dias=ultimoDiaMes.getDate()-(dia-ahora_dia);
}
document.getElementById("p101iedad").value=""+edad+"";
}else{
document.getElementById("p101iedad").value="La fecha "+fecha+" es incorrecta";
}
}