是否有将2位数年份转换为4位数年份的首选算法?
我有一个2位数的出生日期(以及月和日)我想要转换为C#DateTime
。很明显,生日不可能在未来,但是.NET中是否有现有设施将2位数年份转换为4位数年份?
答案 0 :(得分:2)
static int GetFourDigitYear(int year, int maxYear)
{
System.Globalization.GregorianCalendar cal =
new System.Globalization.GregorianCalendar();
cal.TwoDigitYearMax = maxYear;
return cal.ToFourDigitYear(year);
}
maxYear
应该是当前的四位数年份。
编辑: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 :(得分:1)
各种系统根据其基本数据要求使用不同的断点日期。
在您的情况下,假设00到09年是2000+而其他任何值(10到99)都是1900 +
,这很可能是安全的。您必须问自己的问题是:将100岁以上的人作为您系统中当前记录的可能性是多少。
您应该只进行一次计算,存储它,并使用4位数年份将所有代码保存。
答案 2 :(得分:0)
编辑:当然,有一个公式(通过算法了解日历如何工作)会降低这种可能性......但最后,如果你不存储他们的话,你仍然可能会有一些错误的结果年龄。
编辑2:当然,如果你有他们的年龄,那么你不需要日历算法。