"Réstale el año de nacimiento al año actual" funciona para una estimación rápida, pero se equivoca en dos de cada tres días del año: si tu cumpleaños todavía no ha llegado este año, esa resta te da una edad de más.
El cálculo correcto
Calcular una edad exacta en años, meses y días requiere comparar las tres partes de la fecha, no solo el año:
- Se calcula la diferencia de años.
- Si el mes y día actuales son anteriores al mes y día de nacimiento, se resta un año a ese resultado (el cumpleaños "todavía no ha llegado").
- Se calculan los meses y días restantes tomando prestado del mes/año anterior cuando el día actual es menor que el día de nacimiento — el mismo mecanismo que un préstamo al restar en columnas.
La calculadora de edad exacta hace este ajuste automáticamente y además te da el total en días, semanas y horas — útil para trámites que piden la edad en unidades distintas a "años".
El caso del 29 de febrero
Quien nace en año bisiesto tiene un problema real de calendario: su cumpleaños solo existe cada 4 años. La convención más extendida (y la que usa la mayoría de sistemas legales y administrativos) es tratar el 28 de febrero o el 1 de marzo como el cumpleaños "efectivo" en años no bisiestos, según la jurisdicción. Si tu aplicación calcula mayoría de edad o vencimientos a partir de una fecha de nacimiento del 29 de febrero, vale la pena decidir explícitamente qué convención usas — no calcularlo implícitamente y descubrir el bug cada cuatro años.
Zonas horarias: por qué "hoy" no es lo mismo en todas partes
Si tu app calcula la edad en el servidor usando la fecha del servidor, y el usuario está en otra zona horaria, puede haber un desfase de hasta un día cerca de la medianoche. Para cálculos de edad que importan legalmente (verificación de mayoría de edad, por ejemplo), conviene usar la fecha local del usuario, no la del servidor — o al menos ser consciente de dónde puede fallar. Si necesitas convertir entre zonas horarias para depurar este tipo de casos, el conversor de zonas horarias ayuda a visualizar el desfase.
Edad en meses para bebés
Un caso particular: la edad de un bebé casi siempre se expresa en meses, no en años ("tiene 7 meses"), y ahí el mismo algoritmo de años/meses/días se usa pero mostrando solo la parte de meses y días — sin redondear a "casi 1 año", que es donde más confusión genera en cartillas de vacunación y controles pediátricos.

