Skip to content

Calcular edad de una persona en JavaScript

by en 13 mayo, 2011

Hace algunos días les puse cómo calcular la edad en C#. Ahora les mostraré cómo hacerlo en JavaScript.

Esta función la encontré en JavaScriptKit.com y pueden acceder a su versión en este link.

La función

/*
Ultimate Age calculator script- By JavaScript Kit (http://www.javascriptkit.com)
Over 200+ free scripts here!
Credit must stay intact for use
Modified by Gabriel Espinoza Erices (May 12, 2011) to remove the countunit from the return value in order to get a number instead of a string.
*/

var one_day = 1000 * 60 * 60 * 24;
var one_month = 1000 * 60 * 60 * 24 * 30;
var one_year = 1000 * 60 * 60 * 24 * 30 * 12;

function displayage(yr, mon, day, unit, decimal, round) {
    today = new Date();
    var pastdate = new Date(yr, mon - 1, day);

    var countunit = unit;
    var decimals = decimal;
    var rounding = round;

    finalunit = (countunit == "days") ? one_day : (countunit == "months") ? one_month : one_year;
    decimals = (decimals <= 0) ? 1 : decimals * 10;

    if (unit != "years") {
        if (rounding == "rounddown") {
            //document.write(Math.floor((today.getTime() - pastdate.getTime()) / (finalunit) * decimals) / decimals + " " + countunit);
            return (Math.floor((today.getTime() - pastdate.getTime()) / (finalunit) * decimals) / decimals);
        }
        else {
            //document.write(Math.ceil((today.getTime() - pastdate.getTime()) / (finalunit) * decimals) / decimals + " " + countunit);
            return (Math.ceil((today.getTime() - pastdate.getTime()) / (finalunit) * decimals) / decimals);
        }
    }
    else {
        yearspast = today.getFullYear() - yr - 1;
        tail = (today.getMonth() > mon - 1 || today.getMonth() == mon - 1 && today.getDate() >= day) ? 1 : 0;
        pastdate.setFullYear(today.getFullYear());
        pastdate2 = new Date(today.getFullYear() - 1, mon - 1, day);
        tail = (tail == 1) ? tail + Math.floor((today.getTime() - pastdate.getTime()) / (finalunit) * decimals) / decimals : Math.floor((today.getTime() - pastdate2.getTime()) / (finalunit) * decimals) / decimals;
        //document.write(yearspast + tail + " " + countunit);
        return (yearspast + tail);
    }
}

//Sample usage
//displayage (year, month, day, unit, decimals, rounding)
//Unit can be "years", "months", or "days"
//Decimals specifies demical places to round to (ie: 2)
//Rounding can be "roundup" or "rounddown"

//displayage(1997, 11, 24, "years", 0, "rounddown")

La función fue modificada por mi para que devolviera un número y no una cadena, para que en vez de que retornara xx years, retornase sólo xx. Lo mismo aplica para los meses y días.

Su uso

simplemente:

displayage(año, mes, día, qué_se_desea_obtener, cantidad_de_decimales, tipo_de_aproximación);
var edad = displayage(1986, 6, 19, "years", 0, "rounddown");
// edad = 24 (al día de hoy)

donde:

  • Año: año, debe corresponder a un año de 4 dígitos
  • Mes: Mes del 1 al 12
  • Día: Día
  • qué_se_desea_ontener: string, puede ser “years”, “months” o “days” y corresponde a la forma en que se desea que calcule la edad: En años, meses o días respectivamente.
  • cantidad_de_decimales: La cantidad de decimales con la que se desea redondear la resta de fechas. Para la gran mayoría de los cálculos, bastará con 0.
  • tipo_de_aproximación: string, puede ser “roundup” o “rounddown” y es para saber si se desea redondear hacia arriba o hacia abajo los cálculos. Para la gran mayoría de los casos debe ser “rounddown”.

Como pueden ver, esta función puede aplicarse de varias maneras y permite calcular la edad en años, meses y días sin mayor esfuerzo🙂

Enjoy!

From → JavaScript

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: