我正在尝试将 Julian 日期字符串转换为 DateTime,但网络上的解决方案似乎都没有工作。我有一个朱利安日期字符串13324
。
Julian Date: 13324
我想得到以下 DateTime
Date: 20-Nov-2013
请你指引我正确的方向。谢谢。
我正在尝试将 Julian 日期字符串转换为 DateTime,但网络上的解决方案似乎都没有工作。我有一个朱利安日期字符串13324
。
Julian Date: 13324
我想得到以下 DateTime
Date: 20-Nov-2013
请你指引我正确的方向。谢谢。
这是我能想到的最简单的解决方案:
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);
(注意:这一切都来自记忆;验证语法等)
对不起,我的英语不好
如果上面的代码不起作用,请尝试此代码。它对我有用。
public DateTime ConvertJulianToDatetime(string julianDate)
{
int dateint = int.Parse(julianDate);
DateTime dinicio = new DateTime(1840, 12, 31);
dinicio = dinicio.AddDays((double)dateint);
return dinicio;
}
我认为这段代码更可靠(任何人都可以注意到):
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;
}