1

我正在尝试将 Julian 日期字符串转换为 DateTime,但网络上的解决方案似乎都没有工作。我有一个朱利安日期字符串13324

Julian Date: 13324

我想得到以下 DateTime

Date: 20-Nov-2013

请你指引我正确的方向。谢谢。

4

3 回答 3

4

这是我能想到的最简单的解决方案:

string julianDate = "13324";

int jDate = Convert.ToInt32(julianDate);
int day = jDate % 1000;
int year = (jDate - day) / 1000;
var date1 = new DateTime(year, 1, 1);
var result = date1.AddDays(day - 1);

(注意:这一切都来自记忆;验证语法等)

于 2013-11-29T19:20:39.137 回答
0

对不起,我的英语不好

如果上面的代码不起作用,请尝试此代码。它对我有用。

public DateTime ConvertJulianToDatetime(string julianDate)
{
    int dateint = int.Parse(julianDate);

    DateTime dinicio = new DateTime(1840, 12, 31);
    dinicio = dinicio.AddDays((double)dateint);
    return dinicio;
}
于 2020-09-17T17:20:12.887 回答
0

我认为这段代码更可靠(任何人都可以注意到):

public static DateTime FromJD(double JD)
{
    return DateTime.FromOADate(JD - 2415018.5);
}

对于 MJD(修正儒略日)。可以根据需要添加 Math.Floor 或 Math.Ceiling:

public static DateTime FromMJD(double MJD)
{     
    return DateTime.FromOADate((MJD - 2415018.5) + 2400000.5);
}

还有一个反向翻译的例子:

public static double ToMJD(DateTime date)
{
    return (date.ToOADate() + 2415018.5) -2400000.5;
}

public static double ToJD(DateTime date)
{
    return date.ToOADate() + 2415018.5;
}
于 2021-05-19T04:01:06.167 回答