Calculadora de Edad — Edad Exacta en Años, Meses y Días
Calculadora de edad gratuita: ingresa tu fecha de nacimiento para obtener tu edad exacta en años, meses y días, más semanas, días, horas totales y tu próximo cumpleaños.
Calculadora de Edad
Naciste un Monday
Próximo cumpleaños: faltan 127 días (cumpliendo 37)
Tu edad en otras unidades
Progreso de vida
Tu edad contra un período de referencia ilustrativo de 80 años.
Documentación
¿Qué es una calculadora de edad?
Una calculadora de edad determina el tiempo exacto entre dos fechas: una fecha de nacimiento y una fecha de referencia, normalmente la fecha actual. Expresa el resultado en años, meses y días, y también como un total acumulado de meses, semanas, días, horas, minutos y segundos. La edad también puede calcularse para una fecha pasada o futura, lo que muestra cuántos años tenía una persona, o tendrá, en ese día.
Cómo calcular la edad
La edad es la diferencia entre dos fechas del calendario. Hay dos formas correctas de describir esa diferencia, y ambas son útiles para distintos fines.
Edad según el calendario (años, meses y días)
Esta es la forma habitual de expresar la edad, por ejemplo: «33 años, 4 meses y 5 días». Se obtiene en tres pasos:
- Contar los años completos transcurridos desde la fecha de nacimiento.
- Contar, desde el cumpleaños más reciente, los meses completos transcurridos.
- Contar a partir de ahí los días restantes.
El paso 3 se complica cerca del final de un mes, porque no todos los meses tienen el mismo número de días. Una persona nacida el 31 de enero, cuya edad se mide el 1 de marzo, tiene 1 mes y 1 día de edad. Un mes después del 31 de enero es el 28 de febrero (o el 29 de febrero en un año bisiesto), ya que no existe el 31 de febrero. El 1 de marzo es un día después. Este método, llamado a veces regla relativedelta por la biblioteca de Python que lo popularizó, ajusta la fecha del aniversario al último día del mes más corto para que el recuento de días nunca sea negativo.
Tiempo total transcurrido (días, horas y segundos)
Para contar con precisión el tiempo vivido, ambas fechas se convierten en un único instante y se calcula la diferencia en días completos:
donde d es el número de días completos, t la fecha objetivo y b la fecha de nacimiento, cada uno tomado como un recuento de milisegundos, y el divisor es el número de milisegundos de un día.
Antes de efectuar la resta, ambas fechas se establecen a la medianoche UTC (tiempo universal coordinado). Esto evita que los cambios de horario de verano añadan o resten una hora y distorsionen el recuento de días. A partir del total de días, las semanas se obtienen dividiendo los días entre 7 y redondeando hacia abajo. Las horas, los minutos y los segundos se obtienen multiplicando el recuento de días por 24, 1.440 y 86.400, respectivamente.
Dividir el total de días entre 365 o 365,25 da una edad aproximada en años, pero no tiene en cuenta qué años del intervalo fueron bisiestos. El cálculo según el calendario, descrito anteriormente, es exacto. Use la edad según el calendario para responder «¿qué edad tengo?». Use el total de días o semanas para tareas que necesiten un tiempo transcurrido preciso, como programar dosis de medicamentos o contar hacia atrás hasta un hito.
Ejemplo resuelto
Una persona nacida el 1 de enero de 2000, cuya edad se mide el 1 de enero de 2020:
| Medir | Valor |
|---|---|
| Edad según el calendario | 20 años, 0 meses y 0 días |
| Total de meses | 240 |
| Total de semanas | 1.043 |
| Total de días | 7.305 |
| Total de horas | 175.320 |
| Total de minutos | 10.519.200 |
| Total de segundos | 631.152.000 |
| Día de la semana de nacimiento | Sábado |
El total de 7.305 días equivale a 20 × 365 más 5 días bisiestos, correspondientes a los años bisiestos 2000, 2004, 2008, 2012 y 2016. Cada uno de esos años añadió un 29 de febrero que queda dentro del intervalo de 20 años. Por eso el recuento de días es mayor que un simple 20 × 365, y por eso es fácil equivocarse por algunos días al calcularlo manualmente.
Fórmula para calcular la edad en código
El método de cálculo de la edad según el calendario descrito anteriormente puede implementarse en la mayoría de los lenguajes de programación. Es más seguro utilizar una biblioteca de fechas integrada que escribir manualmente las reglas de los años bisiestos y la duración de los meses.
1from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth) # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days # total elapsed days
10print(total_days) # 7305
111const MS_PER_DAY = 86400000;
2
3// Add n months, clamping the day to the target month's last day
4// (31 January + 1 month = 28 February). Date.UTC on its own does not
5// clamp: it would roll that date forward into March.
6function addMonthsUTC(base, n) {
7 const total = base.getUTCMonth() + n;
8 const y = base.getUTCFullYear() + Math.floor(total / 12);
9 const m = ((total % 12) + 12) % 12;
10 const lastDay = new Date(Date.UTC(y, m + 1, 0)).getUTCDate();
11 return Date.UTC(y, m, Math.min(base.getUTCDate(), lastDay));
12}
13
14function calendarAge(birth, target) {
15 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
16 + (target.getUTCMonth() - birth.getUTCMonth());
17 if (addMonthsUTC(birth, months) > target.getTime()) months -= 1;
18 const anchor = addMonthsUTC(birth, months);
19 return {
20 years: Math.floor(months / 12),
21 months: months % 12,
22 days: Math.floor((target.getTime() - anchor) / MS_PER_DAY),
23 };
24}
25
26const birth = new Date(Date.UTC(2000, 0, 1));
27const target = new Date(Date.UTC(2020, 0, 1));
28
29calendarAge(birth, target); // { years: 20, months: 0, days: 0 }
30Math.floor((target - birth) / MS_PER_DAY); // 7305
311' Whole days between two dates (A1 = birth, B1 = target):
2=B1-A1
3
4' Calendar age in complete years / months / leftover days:
5=DATEDIF(A1, B1, "y") & " years, " & DATEDIF(A1, B1, "ym") & " months, " & DATEDIF(A1, B1, "md") & " days"
6Microsoft advierte que el argumento "md" puede devolver un número negativo o un recuento de días incorrecto
cerca de los límites entre meses, por lo que la parte de días restantes de esa fórmula no
siempre coincide con la regla de ajuste indicada anteriormente.
Preguntas frecuentes
¿Cómo calculo mi edad exacta? Introduzca la fecha de nacimiento y deje la fecha de referencia en la fecha actual. El resultado muestra la edad en años, meses y días, además de la misma edad expresada en días, semanas, horas y segundos totales.
¿Por qué dos calculadoras de edad dan respuestas diferentes? Por lo general, la diferencia está en cómo se cuentan los días restantes cerca del límite entre meses. Una calculadora que ajusta la fecha al mes más corto al final del mes, como se ha descrito anteriormente, puede diferir en uno o dos días de otra que simplemente divide el tiempo transcurrido entre 30.
¿El cálculo tiene en cuenta los años bisiestos? Sí. El recuento total de días incluye cada 29 de febrero que cae entre las dos fechas. En un año sin un 29 de febrero, el aniversario de un nacimiento en día bisiesto se cuenta como el 28 de febrero, el último día de ese mes. Una persona nacida el 29 de febrero de 1996 tiene 26 años, 11 meses y 22 días el 20 de febrero de 2023, y su próximo cumpleaños cae 8 días después, el 28 de febrero de 2023.
¿Se puede calcular la edad para una fecha pasada o futura? Sí. Establecer una fecha futura como fecha de referencia muestra qué edad tendrá una persona ese día. Establecer una fecha pasada muestra qué edad tenía. La fecha de nacimiento no puede estar en el futuro y la fecha de referencia no puede ser anterior a la fecha de nacimiento.
¿Las zonas horarias afectan al resultado? No. Ambas fechas se convierten a la medianoche UTC antes de calcular el recuento de días, por lo que el total permanece igual independientemente de la ubicación del usuario o de los cambios de horario de verano.
¿Por qué el recuento de días difiere de dividir los días entre 365,25? 365,25 es solo la duración media de un año; no indica qué años concretos del intervalo son años bisiestos de 366 días. Contar los días completos entre dos fechas reales del calendario es exacto.
Fuentes
- Python
dateutil—relativedelta, la regla de mes y día de la edad según el calendario descrita anteriormente. - Plataforma Java —
Period.betweenyChronoUnit.DAYS. - Microsoft Excel — función
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N., y Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.