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")