我正在尝试将Julian日期字符串转换为DateTime,但网络上的解决方案似乎都没有工作。我有一个朱利安日期字符串13324
。
Julian Date: 13324
我想获得以下DateTime
Date: 20-Nov-2013
请你指点我正确的方向。感谢。
答案 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;
}