Comunidad de diseño web y desarrollo en internet online

Obtener edad restando fechas en JAVASCRIPT

Citar            
MensajeEscrito el 02 Feb 2016 02:11 pm
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


Código Javascript :

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";
    }
}

Por movaj

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2016 06:55 am
Hola buenas,
no se si llego tarde, pero si no, deberías pasar las fechas a datetime, después restarlas, y una vez restadas sacar la edad. Pero no lo hagas tratando las fechas como string, y teniendo en cuenta el formato.

Un saludo,
David
estudio de diseño grafico

Por conectart

Claber

128 de clabLevel



 

ceo

chrome
Citar            
MensajeEscrito el 18 Mar 2016 09:05 am

Por Doper1992G

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.