web-dev-qa-db-fra.com

Conversion d'une capture de 2 ans à 4 ans sans 100 ans?

Des conseils sur la façon de capturer un âge d'une année complète lors de la conversion de deux ans à un chiffre de quatre ans? Sans demander de saisie manuelle?

Je pense que le problème se pose spécifiquement pour un âge de 100 ans.

Par exemple. si nous capturions DDMMYY: 04/08/18, cette personne pourrait avoir 100 ans, par exemple 04/08/2018 ou 04/08/1918. Y a-t-il une logique que nous pouvons implémenter pour manipuler cela sans demander d'entrée utilisateur?

2
logikblok

l'excellente réponse de Jaroslav M donne l'idée clé: certaines plages d'années à deux chiffres sont (presque exclusivement) sûres pour s'étendre à quatre chiffres; certains sont "probablement 19xx"; certains sont "probablement 20xx". Je ne pense pas que vous devriez viser non saisie manuelle, mais avec ce concept à l'esprit, vous devriez être en mesure de le réduire au minimum.

Cas sûr: 19...99 - Présumer 19xx

Pour les utilisateurs réels, il est prudent de supposer que toute personne ayant une année de naissance enregistrée entre 19 et 99 est né le 20e siècle. La valeur inférieure, 19, doit signifie 1919 (bien que la personne ait maintenant 100 ans) puisque nous sommes toujours (au moment de la rédaction) en 2018. La valeur supérieure, 99, doit signifie 1999 (= 19 ans) depuis Emma Morano , la dernière personne (connue pour être) née en 1899, décédée en 2017.

Cas assez sûr: 00...09 - Présumer 20xx

Il devrait être assez sûr de supposer que toute personne ayant une année de naissance enregistrée entre 00 et 09 est né le 21st siècle (et sont donc âgés de 19 à 10 ans). En supposant 19xx impliquerait des âges compris entre 119 et 109 ans: ce dernier pourrait être possible, mais est très peu probable 1 .

Cas probablement sûr: 10...18 - Présumer 19xx

Sauf si vous savez que vous avez des enregistrements pour enfants (par opposition aux jeunes utilisateurs), alors il est assez sûr de supposer que toute personne ayant une année de naissance enregistrée entre 10 et 18 est né le 20e siècle (et sont donc âgés de 109 à 101 ans). En supposant 20xx impliquerait des âges compris entre 9 et 1: peu probable pour les vrais utilisateurs.

Vérifiez ce qui précède

Pour tous les utilisateurs , vous devriez probablement afficher une notification (peut-être quelque chose comme le Code de conduite que StackExchange affiche actuellement) le long des lignes de:

Nous mettons à jour nos dossiers. Votre date de naissance enregistrée était jj/mm/aa que nous avons supposé moyenne jj/mm/aaaa vous faisant zz ans. Veuillez [Cliquez ici] si cela est incorrect.

(Y compris l'âge est probablement utile, mais vous pouvez le supprimer si vous pensez que certaines personnes pourraient être sensibles à le voir!)

Clarifier potentiellement

Si vous faites avez des enregistrements pour enfants (ou utilisateurs de moins de 10 ans), alors pour certaines années de naissance enregistrées (peut-être 05 à 15), vous pourriez envisager de demander explicitement à l'utilisateur de confirmer s'il faut utiliser 19xx (114 à 104 ans) ou 20xx (de 14 à 4 ans).

De même, si vous avez des dossiers historiques (c.-à-d. De personnes qui peuvent être décédées), vous voudrez peut-être poser une question similaire (bien que si tel était le cas, vous vraiment auriez dû utiliser 4- chiffres à partir du début).


1 Cette liste des personnes les plus âgées montre les 100 personnes les plus âgées et note qu'il y a entre 150 et 600 personnes qui ont atteint l'âge de 110 ans. Bien que ce soit un nombre impressionnant du point de vue de la longévité- de vue, les chances que l'un d'entre eux utilise votre application est probablement faible.

5
TripeHound

est-ce déjà développé? Avez-vous des données sur le nombre d'utilisateurs ayant l'année de naissance entre '00 et '18? Si vous capturez le DoB de vos utilisateurs, je suppose que ce n'est pas très courant, car vos utilisateurs auraient généralement au moins 10-15 ans (sauf s'il s'agit d'un site Web pour enfants), vous ne devriez donc pas avoir d'utilisateurs avec DoB 2008-2018 ... Ces valeurs peuvent donc signifier 1908-1918, mais, encore une fois, peu de gens ont entre 100 et 110 ans et utilisent des ordinateurs.

D'un autre côté, vous pouvez avoir des utilisateurs avec DoB entré comme '00 - '08, et il est sûr de supposer que leur DoB est 2000 - 2008, car il est plus probable que vous ayez des utilisateurs âgés de 10 à 18 ans que 110 - 118 ans...

S'il n'est pas encore développé, je vous conseille de capturer l'année entière en AAAA afin de vous débarrasser de l'ambiguïté. De plus, le format 04/08/18 est extrêmement ambigu car il peut être interprété d'au moins trois manières différentes selon d'où vous venez ....

Sidenote: Si vous traitez des dossiers médicaux et saisissez le DoB de patients, par exemple, les enfants en bas âge et les personnes très âgées peuvent apparaître dans les dossiers, donc ce conseil ne s'appliquerait pas. Mais dans ce cas, il est encore plus important de capturer l'année entière ...

2
Jaroslav M