感谢Zator先生的解答here https://social.msdn.microsoft.com/Forums/windowsapps/en-US/12bde6a1-3888-4857-bf71-a9fcadbe9c62/convert-julian-date-with-time-hms-to-date-time-in-c?forum=csharpgeneral我能够像这样解决我的问题:
public DateTime JulianToDateTime(double julianDate) {
double unixTime = (julianDate - 2440587.5) * 86400;
DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(unixTime).ToLocalTime();
return dtDateTime;
}
但值得一提的是,这仅适用于 CE Julian Date 类型,如果 Julian Date 是 BCE 类型,则不起作用,需要其他函数。我还制作了该方法的相反版本,如下所示:
public double DateTimeToJulian(DateTime dateTime) {
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan diff = dateTime.ToUniversalTime() - origin;
double unixTime = Math.Floor(diff.TotalSeconds);
double julianDate = (unixTime / 86400) + 2440587.5;
return julianDate;
}