2桁の年を4桁の年に変換するアルゴリズムがありますか?Y2Kの日付変換を処理するための好ましい方法は?
私はC#DateTime
に変換する2桁の生年月日(月と日とともに)を持っています。明らかに、誕生日は将来可能ではありませんが、.NETには2桁の年を4桁の年に変換する既存の機能がありますか?
2桁の年を4桁の年に変換するアルゴリズムがありますか?Y2Kの日付変換を処理するための好ましい方法は?
私はC#DateTime
に変換する2桁の生年月日(月と日とともに)を持っています。明らかに、誕生日は将来可能ではありませんが、.NETには2桁の年を4桁の年に変換する既存の機能がありますか?
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);
}
このような静的関数は、1年ではなくピボットを渡すことを除いて、私の解決策になりました。生年月日は100年前です。 –
様々なシステムは、その基礎となるデータの要件に応じて、異なるブレークポイントの日付を使用しています。あなたのケースでは
、それが最も可能性の高い安全な任意の他の値(〜99 10)あなたは自問する必要があり、質問がある1900+
あるのに対し、年は09を通じて00 2000+であると仮定することです:何あなたのシステムに現在レコードとして100歳以上の人がいる可能性があります。
この計算を正確に1回実行して保存し、4桁の年を使用してすべてのコードを進めてください。
補足として、このリンク(http://www.theiet.org/factfiles/it/dates.cfm?type=pdf)には、さまざまなシステムで問題を引き起こす可能性のある2001年から2100年の潜在的な日付のリストがあります。 – NotMe
私は、人が100年前の同じ日に生まれた可能性が1/7よりわずかに低いという可能性が2007年1月3日に生まれた場合、この確率があなたの好みに応じて高すぎる場合は、自分の年齢も保存しない限り、これを自動化する良い方法があるとは思えません。
編集:もちろん、この確率を下げる式があります(アルゴリズム的にカレンダーの仕組みを知っています)...しかし、最終的には、保存しないと誤った結果が出る可能性があります彼らの年齢。
編集2:もちろん、あなたの年齢があれば、カレンダーアルゴリズムは必要ありません。
あなたが気づいていなかった場合、あなたは約9年遅れです。 –
私が話さなければならないすべてのシステムがY2Kに準拠しているわけではありません。すべてのシステムがY2Kに準拠するとは限りません。 –