号角日期转换C#和#x2B;日期加/减

号角日期转换C#和#x2B;日期加/减,c#,tsql,clarion,C#,Tsql,Clarion,*(这是针对ISV数据库的,所以我有点逆向工程,无法更改) 如何在C#中进行以下日期到整数(visa/versa)的转换 所以说日期是: 5/17/2012 它被转换成int 77207 在数据库中 起初我以为这是朱利安的约会,但事实似乎并非如此。我是在玩弄这个方法,但是这个不匹配 var date = ConvertToJulian(Convert.ToDateTime("5/17/2012")); Console.WriteLine(date); public st

*(这是针对ISV数据库的,所以我有点逆向工程,无法更改)

如何在C#中进行以下日期到整数(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
而且它似乎是准确的。如何在C#中进行此转换?有人能告诉我这是基于什么标准,或者这只是一个随机转换。提前感谢。

这似乎是一个:

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

据称,这只需要

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


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

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

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

你试过看2012年5月18日是否生成77208,或者2012年5月16日是否生成77206吗?@Josh是的,这就是我如何计算出sql的一部分…5/18=77208等等…为将来遇到这个问题的人重命名好的呼叫Josh,很棒的链接我更喜欢你的-删除我的
 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")