*(这是针对ISV数据库的,因此我对此进行逆向工程并且无法更改)...
如何在C#...
中进行以下日期转换为int(visa / versa)转换所以说日期是:
5/17/2012
它被转换为int
77207
在数据库中。
起初我认为这是一个朱利安日期,但似乎并非如此。我在使用Julian Date Question的方法时无所事事,但这并不匹配。
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#中进行这种转换?并且有人能够教会我这是基于什么标准,还是仅仅是随机转换。提前谢谢。
答案 0 :(得分:6)
//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);
答案 1 :(得分:5)
答案 2 :(得分:0)
如果是线性公式,您应该能够以y = mx + b的形式计算公式。您至少需要两个数据点。
答案 3 :(得分:0)
这是我用来将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")