public static double GregorianToJulianDate(DateTime date)
{
//return date.ToOADate() + 2415018.5;
double year, month, day;
year = date.Year;
month = date.Month;
day = date.Day;
if (year < 0) { year++; } // No year zero
// Jean Meeus algorithm, "Astronomical Algorithms", 1991
if (month < 3)
{
month += 12;
year--;
}
var a = Math.Floor(year / 100);
var b = 2 - a + Math.Floor(a / 4);
var value = Math.Floor(365.25 * (year + 4716)) + Math.Floor(30.6001 * (month + 1)) + day + b - 1524.5;
return value;
}