Cómo calcular la edad en Python (ejemplos de datetime y dateutil)
Aprenda a calcular la edad a partir de la fecha de nacimiento en Python. Incluye años completados, edad a partir de una fecha específica y errores comunes como años bisiestos y zonas horarias.
Cómo calcular la edad en Python (ejemplos de datetime y dateutil)
Si necesitas calcular la edad en Python a partir de una fecha de nacimiento, lo principal que debes hacer es la definición de edad: la mayoría de las aplicaciones necesitan años completados (cumpleaños completos), no solo la diferencia entre años.
1) Años cumplidos (la definición segura)
Esto devuelve el número de años completos desde la fecha de nacimiento (DOB). Resta 1 si el cumpleaños aún no ha ocurrido en el año actual.
desde fecha y hora de importación
def años_edad(fecha de nacimiento: fecha, como_de: fecha | Ninguno = Ninguno) -> int:
si as_of es Ninguno:
como_de = fecha.hoy()
años = como_del.año - fecha.año
antes_cumpleaños = (como_del.mes, como_del.día) < (fecha.mes, fecha.día)
devolver años - 1 si antes_cumpleaños más años
print(edad_años(fecha(2000, 10, 5), fecha(2026, 2, 26)))
2) Edad a partir de una fecha específica (no solo hoy)
Muchos casos de uso necesitan una fecha "a partir de": precios de seguros, comprobaciones de elegibilidad, límites escolares, informes. La función anterior ya lo admite a través de as_of.
3) Salida de estilo exacto (años y meses)
Si desea un resultado como "25 años 4 meses", utilice dateutil.relativedelta (maneja la duración de los meses correctamente).
desde fecha y hora de importación
desde dateutil.relativedelta importar relativodelta
def edad_ym(fecha de nacimiento: fecha, como_de: fecha | Ninguno = Ninguno):
si as_of es Ninguno:
como_de = fecha.hoy()
rd = relativadelta(como_de, fecha de nacimiento)
volver rd.años, rd.meses
print(edad_ym(fecha(2000, 10, 5), fecha(2026, 2, 26)))
4) Errores comunes (y cómo evitarlos)
- Cumpleaños en días bisiestos: decide cómo quieres tratar el 29 de febrero en años no bisiestos. Muchos sistemas usan el 28 de febrero o el 1 de marzo. El comportamiento de la biblioteca es importante, así que pruébelo.
- Fechas, horas y zonas horarias: para fecha de nacimiento, prefiera
fechaafechahora. Si debe utilizar fechas y horas, primero normalícelas a la misma zona horaria. - DOB futuro o valores faltantes: valida las entradas para evitar edades negativas o fallas.
Comprobación rápida (sin código)
Si solo necesitas un resultado rápido, usa la calculadora en línea: Calcular edad en línea.
Guías relacionadas
- Cómo calcular la edad (guía completa)
- Cómo calcular la edad en Excel
- Cómo calcular la edad en JavaScript
Preguntas frecuentes
¿Por qué (hoy.año - fecha.año) a veces es incorrecto?
Porque ignora si el cumpleaños ya ocurrió este año. Debes restar 1 antes del cumpleaños.
¿Debo usar fechahora o fecha para la fecha de nacimiento?
Utiliza la fecha cuando sea posible. La fecha de nacimiento es un día calendario y las zonas horarias pueden cambiar las fechas y horas entre días.