是否有一个2位数年转换成4位数字年优选算法?

我有,我想转换为C#DateTime一个2位数的出生日期(以月和日一起)。 Obiviously,生日不能在未来,但有在.NET现有设施,以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);
}

其他提示

各种系统使用不同的断点日期取决于它们的底层数据的要求。

在您的情况下,它是最有可能安全地假设年00到09是2000+而任何其它值(10到99)是1900 +

你要问自己的问题是:什么是具有100多年老人们为你的系统当前记录的可能性

您应该这样做计算恰好一次,储存,并已全部代码的前进用4位数字的年份。

它会发生,我认为如果一个人是天生potentiall 2007年1月3日是他们出生在一周早100年的同一天的可能性略小于1/7。如果这种概率太高了,自己的喜好,那么我怀疑有自动,除非你还可以存储他们的年龄一个很好的方式。

编辑:当然,有一个公式(知道算法的日历是如何工作的),这将降低这个可能性......但最终,你还是可能有一些错误的结果,如果你没有自己的存储年龄。

编辑2:当然,如果你有自己的年龄,那么你并不需要一个日历算法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top