CLARION日期转换C#+ DATE加/减(CLARION Date Conversion C#

2019-09-17 07:14发布

*(这是ISV数据库,所以我有点逆向工程这一点,并不能改变)...

我怎样才能做到以下日期为int在C#(签证/反之亦然)的转换?

这么说的日期是:

5/17/2012

它被转换成int

77207

在数据库中。

起初我以为这是一个Julian日期但它不会出现这种情况。 我打打闹闹与方法儒略日问然而,这并不匹配。

   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#这种转换? 而有人可以陶冶我,什么标准,这是基于或者是它只是一个随机转换。 提前致谢。

Answer 1:

这似乎是一个号角日期 :

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

据称到, 显示号角日期在Excel中 ,只需要

从值减去36161和格式化为一个日期



Answer 2:

//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);


Answer 3:

如果它是一个线性公式,你应该能够在Y = mx + b中的形式来计算公式。 您将需要最少两个数据点。



Answer 4:

下面是我用号角日期转换为儒略历的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")


文章来源: CLARION Date Conversion C# + DATE ADD/SUBTRACT
标签: c# tsql clarion