web-dev-qa-db-ja.com

キャプチャを2年から100年なしの4年に変換しますか?

2歳から4歳の数字に変換するときに、1年の年齢をキャプチャする方法に関するヒントはありますか?手動入力を求めずに?

私が思う問題は、特に100歳のために発生します。

例えば。 DDMMYYをキャプチャした場合:04/08/18この人は100歳である可能性があります(例:04/08/2018または04/08/1918)。ユーザー入力を要求せずにこれを操作するために実装できるロジックはありますか?

2
logikblok

Jaroslav Mの優れた答え は重要なアイデアを提供します。2桁の年の特定の範囲は(ほぼ例外なく)4桁まで拡張しても安全です。一部は「おそらく19xx」です。一部は「おそらく20xx」です。 no手動入力を目指すべきではないと思いますが、その概念を念頭に置くと、それを最小限に抑えることができるはずです。

安全なケース:19...99 –想定19xx

実際のユーザーの場合、1999の間に誕生年が記録されている人は誰でも20歳で生まれたと考えるのが安全です。番目 世紀。低い値19must1919を意味します(人が100になったにもかかわらず)(2018年にまだ(執筆時点で)いるため)。上の値は99must平均1999(= 19歳) Emma Morano 以来、1899年に生まれた最後の人(知られている)が亡くなりました2017年に。

かなり安全なケース:00...09 –想定20xx

0009の間に誕生年が記録されている人は誰でも21歳で生まれたと考えるのはかなり安全ですst 世紀(したがって、19歳から10歳までです)。 19xxが119から109までの年齢を意味すると仮定します。後者はpossibleになる可能性がありますが、ほとんどありません1

おそらく安全なケース:10...18 –想定19xx

レコードがあることを知らない限り(for子供(若いユーザーとは対照的))、誕生年が1018の間に記録されている人は誰でも、 20年生まれ番目 世紀(したがって、109歳から101歳までです)。 20xxが9歳から1歳までの年齢を意味すると仮定すると、実際のユーザーにはありそうにありません。

上記を確認してください

allユーザーの場合、おそらく(おそらくStackExchangeが現在表示している行動規範のようなもの)に沿って通知を表示する必要があります次の行:

レコードを更新しています。記録された生年月日はdd/mm/yyでしたが、これはdd/mm /を意味すると想定していますyyyyzz歳にします。これが正しくない場合は、[ここをクリック]してください。

(年齢を含めることはおそらく役に立ちますが、一部の人々がそれを見ることに敏感であると思われる場合は、それを削除することができます!)

潜在的に明確にする

doレコードがある場合for子供(または10歳未満のユーザー)の場合、記録されている特定の誕生年(おそらく05から15)まで19xx(114歳から104歳まで)または20xx(14歳から4歳まで)のどちらを使用するかをユーザーに明示的に確認することを検討する場合があります。

同様に、歴史的な記録(つまり、死亡した可能性のある人々)がある場合は、同様の質問をすることをお勧めします(ただし、その場合はreallyは4桁の年を使用しているはずです)最初から)。


1この最古の住人のリスト は、最古の100人を示し、110歳に達した住人は150人から600人と推定されています。これは、長寿の点から見た印象的な数字ですが-視野の中で、彼らがあなたのアプリケーションを使用する可能性はおそらくリモートです。

5
TripeHound

これはすでに開発されていますか? '00から'18の間に誕生年を持っているユーザーの数に関するデータはありますか?ユーザーのDoBをキャプチャしている場合、ユーザーは通常10〜15歳(子供向けのWebサイトでない限り)であるため、これはあまり一般的ではないので、次のようなユーザーは使用しないでください。 DoB 2008-2018 ...そのため、このような値は1908-1918を意味する可能性がありますが、100-110歳である人はそれほど多くありませんandコンピューターを使用しています。

一方、DoBが「00-'08」と入力されたユーザーがいて、110〜118よりも10〜18歳のユーザーがいる可能性が高いため、DoBが2000〜2008であると想定しても安全です。歳...

まだ開発されていない場合は、あいまいさをなくすために、通年をYYYYとしてキャプチャすることをお勧めします。また、フォーマット04/08/18は、出身地に応じて少なくとも3つの異なる方法で解釈できるため、あいまいです。

Sidenote:たとえば、医療記録を処理し、患者のDoBを取得している場合、小さな子供と非常に高齢者の両方が記録に表示される可能性があるため、このアドバイスは適用されません。しかし、そのような場合、通年をキャプチャすることがさらに重要です...

2
Jaroslav M