Cómo calcular la edad en JavaScript (DOB a años, meses, días)
Aprenda formas prácticas de calcular la edad a partir de una fecha de nacimiento en JavaScript. Incluye años, meses y días exactos, una opción de fecha actualizada y errores comunes como zonas horarias y años bisiestos.
Si necesitas calcular la edad de una persona a partir de una fecha de nacimiento (DOB) en JavaScript, puedes hacerlo de diferentes maneras. La clave es decidir qué quieres decir con edad:
- Edad en años cumplidos (más común)
- Edad exacta (años, meses, días)
- Edad a partir de una fecha específica (no siempre hoy)
1) Calcular edad en años cumplidos (sencillo y correcto)
Este es el enfoque estándar: restar años y ajustar si el cumpleaños aún no ha ocurrido este año.
función edadEnAños(fecha de nacimiento, a partir de = nueva fecha()) {
nacimiento constante = nueva fecha (fecha de nacimiento);
const ref = nueva fecha (a partir de);
let años = ref.getFullYear() - nacimiento.getFullYear();
const m = ref.getMonth() - nacimiento.getMonth();
if (m < 0 || (m === 0 && ref.getDate() < nacimiento.getDate())) {
años--;
}
años de retorno;
}
Ejemplo: DOB 2000-02-10 y a partir de 2026-02-09 da 25 (cumpleaños mañana).
2) Calcular la edad exacta (años, meses, días)
Si desea un desglose exacto, puede calcular primero los años, luego los meses y luego los días "tomando prestado" del mes anterior cuando sea necesario.
función EdadExacta(fecha de nacimiento, a partir de = nueva fecha()) {
nacimiento constante = nueva fecha (fecha de nacimiento);
const ref = nueva fecha (a partir de);
let años = ref.getFullYear() - nacimiento.getFullYear();
let meses = ref.getMonth() - nacimiento.getMonth();
let días = ref.getDate() - nacimiento.getDate();
// Ajustar los días tomando prestado del mes anterior
si (días < 0) {
const mesprev = nueva fecha(ref.getFullYear(), ref.getMonth(), 0); // día 0 = último día del mes anterior
días += mesprev.getDate();
meses--;
}
// Ajustar meses tomando prestado del año anterior
si (meses < 0) {
meses += 12;
años--;
}
devolver {años, meses, días};
}
Nota: Los casos extremos de fecha del mes (como una fecha de nacimiento el día 31) requieren pruebas cuidadosas. Si necesita algo sólido en todas las configuraciones regionales y casos extremos, considere usar una biblioteca de fechas bien probada.
3) Utilice una fecha "a partir de" para la edad en una fecha pasada o futura
Muchas aplicaciones necesitan antigüedad en una fecha de referencia específica (seguro, reglas de elegibilidad, límites del año escolar). Ambas funciones anteriores aceptan un parámetro asOf, por lo que puedes hacer:
ageInYears('1995-06-20', '2030-01-01');
Edad exacta('1995-06-20', '2030-01-01');
Errores comunes (y cómo evitarlos)
- Zonas horarias: el análisis de
AAAA-MM-DDpuede comportarse de manera diferente en distintos entornos. Si solo le importa la fecha, cree la fecha en hora local:nueva fecha(año, mesíndice, día). - Cumpleaños en días bisiestos: decide tu regla para el 29 de febrero en años no bisiestos (28 de febrero o 1 de marzo). Sea consistente.
- Entradas no válidas: validan que la fecha de nacimiento sea una fecha real y no futura.
Opción rápida: utiliza la calculadora de edad online
Sisolo necesita la respuesta (o desea validar su implementación), use nuestra calculadora gratuita: Calcular edad en línea.
Guías relacionadas
- Cómo calcular la edad en Excel
- Cómo calcular la edad en Google Sheets
- Explora todas las guías de cálculo de edad
Preguntas frecuentes
¿Cuál es la forma más precisa de calcular la edad?
En la mayoría de los casos, "años completos" (edad en años completos) es el estándar. Si necesita un desglose completo, calcule primero los años, luego los meses, luego los días y pruebe casos extremos como la duración de los meses y los años bisiestos.
¿Por qué JavaScript a veces proporciona el día incorrecto para una cadena de fecha?
Porque nueva Fecha('AAAA-MM-DD') puede interpretarse como UTC en algunos entornos. Si le interesa la fecha del calendario local, analice las partes y use nueva fecha(y, m, d).