处理Y2K日期转换首选的方法?
-
20-08-2019 - |
题
是否有一个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:当然,如果你有自己的年龄,那么你并不需要一个日历算法
。不隶属于 StackOverflow