如何将 Julian 日期转换为时间 - 例如 2456961.090914(CE 2014 年 10 月 30 日 14:10:54.6 UT),您可以在此网站上进行测试:http://aa.usno.navy.mil/data/docs/JulianDate 。 php在C#中?
我尝试了几种我在网上找到的算法,但有些算法并没有将 Julian 视为一个double
, onlylong
甚至int
. 我DateTime.ToOADate
在System.DateTime
.
如何将给定的儒略日期转换为正常/常规日期时间?
问问题
2845 次
1 回答
3
感谢 Zator 先生在这里的回答,我能够像这样解决我的问题:
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;
}
于 2014-10-31T14:16:11.743 回答