La validación de la fecha de nacimiento parece el ejercicio más simple de un formulario y es, en realidad, donde se acumulan los errores silenciosos. Casi todo el mundo prueba con una fecha corriente del siglo pasado y da el trabajo por terminado. Los problemas aparecen después, con quien nació un 29 de febrero, con quien cumple años justo hoy y con quien vive en un huso horario en el que la fecha ya es otra. Esta guía recorre esos extremos y explica qué conviene decidir antes de escribir la primera comprobación.
Por qué una fecha de nacimiento no es un dato sencillo
A primera vista solo hay que comprobar que la fecha exista, que no sea futura y que corresponda a una edad razonable. Las tres comprobaciones son correctas y las tres esconden una decisión que nadie tomó por escrito.
¿Qué es una edad razonable? ¿Se admite un siglo de vida? ¿Y una persona de ciento diez años? ¿Se rechaza una fecha de hace dos días porque el sistema es para adultos? Cada respuesta cambia el conjunto de valores que el formulario acepta, y ninguna se deduce del propio campo. Si esa decisión no está escrita en algún sitio, cada servicio que valide la misma fecha lo hará a su manera y aparecerán discrepancias entre pantallas.
¿Qué pasa con el 29 de febrero?
El calendario gregoriano añade un día cada cierto tiempo para corregir el desfase con el año solar. La regla es conocida: un año es bisiesto si es divisible entre cuatro, salvo los años de siglo, que solo lo son si además son divisibles entre cuatrocientos. Por eso 1900 no fue bisiesto y 2000 sí lo fue.
El 29 de febrero solo existe en esos años, y quien nace ese día plantea una pregunta que cada país resuelve a su manera: en los años comunes, ¿su cumpleaños se celebra el 28 de febrero o el 1 de marzo? Para un formulario la consecuencia práctica es que no se puede exigir que la fecha del documento coincida con la fecha que la persona introduce a mano sin admitir ambas convenciones.
¿Cuándo se cumple un año más?
La costumbre general es que la edad en años cumplidos aumenta cuando el cumpleaños ya ha pasado, y que el propio día del cumpleaños cuenta como cumplido. Dicho de otro modo: el día en que alguien cumple los dieciocho ya se le considera de dieciocho, no al día siguiente.
Ese matiz es exactamente el que separa una prueba que pasa de una que falla, porque el caso interesante no es el de la persona que nació hace veinte años, sino el de quien cumple el requisito hoy, el de quien lo cumple mañana y el de quien lo cumplió ayer. Un sistema que se equivoca en el borde rechaza a un usuario legítimo justo el día en que más ganas tiene de registrarse.
Calendarios, husos horarios y fechas de relleno
Hay un detalle que suele pasarse por alto: la fecha de nacimiento se calcula contra el día de hoy, y hoy no es el mismo día en todos los lugares del planeta al mismo tiempo. Un servicio que decide a medianoche según su propio reloj puede adelantarse o retrasarse varias horas respecto al usuario. La edad no es una propiedad fija de la persona, sino el resultado de comparar dos fechas, una de las cuales se mueve.
A eso se suma que no todo el mundo cuenta los años con el mismo calendario. Etiopía, Nepal e Irán usan calendarios propios, de modo que una misma fecha del año se escribe de forma distinta según el sistema. Y existe un problema más doméstico: los formularios que se rellenan con una fecha de relleno, como el primer día de un año redondo, y que después nadie limpia. Ese valor acaba tratado como un cumpleaños auténtico y produce edades imposibles para el contexto.
Cómo se prueba un formulario que pide la fecha de nacimiento
Los equipos que desarrollan altas, suscripciones o controles de edad necesitan un conjunto de fechas que cubra los bordes, no solo el centro. En el generador de datos de identidad de este sitio se obtiene un registro completo del país elegido, con la fecha de nacimiento y la edad calculada a partir de ella, de manera que ambos campos son coherentes entre sí y con el resto del registro.
Para montar la batería de pruebas conviene partir de una fecha de referencia fija en lugar de usar el reloj de la máquina; así la prueba no cambia de resultado según el día en que se ejecute. La guía sobre verificación de edad en pruebas desarrolla ese planteamiento con los umbrales más habituales, y la de coherencia de los datos de identidad explica cómo comprobar que la fecha no contradice a los demás campos del registro.
Notas para quien programa
- Guarda la fecha como fecha, sin hora ni huso horario. Una fecha de nacimiento es un día concreto, no un instante. Añadirle una zona horaria introduce desplazamientos de un día que aparecen en los informes y nadie sabe explicar.
- Calcula la edad en días completos, no restando años. La resta de años falla en los bordes y no distingue entre quien cumple hoy y quien cumple mañana. Compara fechas y divide.
- Prepara los tres casos de borde por cada umbral. Quien cumple el requisito hoy, quien lo cumple mañana y quien lo cumplió ayer. Con esos tres valores se detectan casi todos los errores de comparación.
- Decide por escrito qué se hace con el 29 de febrero. Si el sistema no lo resuelve de forma explícita, cada servicio lo resolverá a su manera y las respuestas serán distintas según la pantalla.
- Rechaza las fechas de relleno conocidas. Los valores que se usan como marcador en las importaciones no son cumpleaños y no deberían superar la validación. La página de México recuerda, en el caso de su documento de identidad, que la fecha y el número viajan juntos y deben contar la misma historia.
Siguientes pasos
Escribe hoy mismo los tres casos de borde de cada umbral que aplique tu sistema, con una fecha de referencia fija, y añádelos a la batería de pruebas. Es un trabajo de una tarde que evita discusiones cada vez que alguien cumple años.
Y para el resto de los campos del registro, el generador de datos de identidad devuelve identidades completas y coherentes. Ese material es solo para pruebas de software, no corresponde a ninguna persona real y no sirve para hacerse pasar por otra persona ni para acreditar una fecha de nacimiento ante nadie.