CLARION日期转换C#+ DATE ADD / SUBTRACT

*(这是针对ISV数据库的,因此我对此进行逆向工程并且无法更改)…

如何在C#中执行以下日期转换为int(visa / versa)转换…

所以说日期是:

5/17/2012 

它被转换为int

 77207 

在数据库中。

起初我以为这是一个朱利安日期,但似乎并非如此。 我正在使用朱利安日期问题的方法搞错,但这不匹配。

  var date = ConvertToJulian(Convert.ToDateTime("5/17/2012")); Console.WriteLine(date); public static long ConvertToJulian(DateTime Date) { int Month = Date.Month; int Day = Date.Day; int Year = Date.Year; if (Month < 3) { Month = Month + 12; Year = Year - 1; } long JulianDay = Day + (153 * Month - 457) / 5 + 365 * Year + (Year / 4) - (Year / 100) + (Year / 400) + 1721119; return JulianDay; } Outputs 2456055 //Should be 77207 

我一直在使用这个SQL来进行转换:

 SELECT Convert(date, CONVERT(CHAR,DATEADD(D, 77207, '1800-12-28'),101)) 

它似乎是准确的。 我怎么能在C#中进行这种转换? 并且有人能够教会我这是基于什么标准,还是仅仅是随机转换。 提前致谢。

这似乎是一个号角日期 :

自1800年12月28日以来经过的天数

据称, 在Excel中显示Clarion Dates只需要

从值中减去36161并将其格式化为日期

 //TO int var date = new DateTime(1800,12,28,0,0,0); var daysSince = (DateTime.Now-date).Days; //FROM int var date = new DateTime(1800, 12, 28, 0, 0, 0); var theDate = date.AddDays(77207); 

如果它是线性公式,您应该能够以y = mx + b的forms计算公式。 您至少需要两个数据点。

这是我用来将Clarion Date转换为Julian Date的vb.net代码:

  Dim ldblDaysToSubtract As Double = 36161.0 mclsRevEmployeeRecd.BirthDate(istrBirthDate:=(CDbl(E1Row.Item("BIRTH_DT")) - ldblDaysToSubtract).ToString) mstrBirthDate = Format(CDate(Date.FromOADate(CDbl(istrBirthDate)).ToString), "MM/dd/yyyy")