Julian日期字符串到DateTime

时间:2013-11-29 19:14:35

标签: c# datetime julian

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

Julian Date: 13324

我想获得以下DateTime

Date: 20-Nov-2013

请你指点我正确的方向。感谢。

3 个答案:

答案 0 :(得分:2)

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

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

(注意:这全部来自内存;验证语法等)

答案 1 :(得分: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;
}

答案 2 :(得分: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;
}