Y2Kの日付変換を処理するための好ましい方法は?
-
20-08-2019 - |
質問
4桁の年に2桁の年を変換するための好ましいアルゴリズムはありますか?
私はC#のDateTime
に変換したい(月と日と一緒に)2桁の誕生日を持っています。 Obiviously、生年月日は、将来的にすることはできませんが、4桁の年に2桁の年に変換する.NETにおける既存の施設がありますか?
解決
static int GetFourDigitYear(int year, int maxYear)
{
System.Globalization.GregorianCalendar cal =
new System.Globalization.GregorianCalendar();
cal.TwoDigitYearMax = maxYear;
return cal.ToFourDigitYear(year);
}
maxYear
現在の4桁の年である必要があります。
編集:OPのソリューション:
static int GetFourDigitYear(int year, int pivot)
{
System.Globalization.GregorianCalendar cal =
new System.Globalization.GregorianCalendar();
cal.TwoDigitYearMax = new DateTime.Year + (100-pivot);
return cal.ToFourDigitYear(year);
}
他のヒント
様々なシステムは、その基礎となるデータの要件に応じて、異なるブレークポイントの日付を使用します。
あなたのケースでは、それが最も可能性の高い安全な任意の他の値(〜99 10)
+ 1900されているのに対し、09年まで00 2000+あると仮定することですあなたは自問する必要があり質問です:現在システム内のレコードとして100 +歳の人を持っていることの可能性は何である
。あなたは、正確に一度この計算を行うことを保存し、すべてのコードは4桁の年を使用して、今後している必要があります。
もし人がpotentiall彼らは100年前の週の同じ日に生まれた可能性が1/7よりわずかに小さいことを2007年1月3日に生まれたことを私に起こるであろう。この確率はあなたの好みのために高すぎる場合は、その後、私はあなたにも自分の年齢を格納しなければ、これを自動化するための良い方法があることを疑うます。
編集:もちろん、この確率を下げます(アルゴリズムカレンダーがどのように機能するかを知る)式があります...しかし、最後に、あなたはまだあなたが保存していない場合は、いくつかの誤った結果を持っている可能性が高いです彼ら年齢ます。
編集2:あなたは自分の年齢を持っている場合はもちろん、あなたはカレンダーのアルゴリズムを必要としません。
。所属していません StackOverflow