c# - 在 C# 中将 Julian 日期与时间 (H/m/s) 转换为日期时间

标签 c# datetime julian-date

如何转换 Julian Date with Time - 例如2456961.090914 (CE 2014 October 30 14:10:54.6 UT) 你可以在这个网站上测试:http://aa.usno.navy.mil/data/docs/JulianDate.php in C#?

我尝试了几种在网上找到的算法,但有些算法并不认为 Julian 是 double,而只是 long 甚至是 int。我在 System.DateTime 中没有的其他一些使用 DateTime.ToOADate

如何将给定的 Julian Date 转换为正常/常规 DateTime?

最佳答案

感谢Zator先生的解答here我能够像这样解决我的问题:

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;
}

关于c# - 在 C# 中将 Julian 日期与时间 (H/m/s) 转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655365/

相关文章:

java - 将 Julian 日期转换为常规日历日期

c# - 如何使用 LINQ to Entity 将数据导出到 Excel?

c# - 在 Mono 上测试文件权限

c# - c++ exe如何定位c# dll?

javascript - 使用破折号而不是斜杠将日期字符串转换为日期对象会产生不一致的结果

php - 如何在 PHP 中以 Mysql DateTime 格式打印当前月份

c# - Unity currentActivity 在场景变化时会变化吗?

c# - 如何在 C# 中将 DateTime 转换为 yyyy-mm-ddT00 :00:00. 000Z 格式?

java - Java 中的朱利安日

java - 为什么 GregorianCalendar.getInstance 包含儒略历类型的 calsys 和 cdate