我尝试实现两个功能:1)将日期转换为儒略日数;2)将儒略日数转换回日期(年、月和日)。我的代码返回的结果是关闭了一天。我不熟悉算法的工作原理,但是如果我使用
Math.Ceiling
朱利安数的工作,但我不确定这是最好的方法来修复代码。任何帮助都将不胜感激。谢谢您。
public class Program
{
///
/// Converts year, month and day to a Julian number
///
///
///
///
///
public static decimal JulianNumber(int year, int month, int day)
{
decimal a, b, c, e, f;
if (month == 1 || month == 2)
{
year -= 1;
month += 12;
}
a = Math.Truncate((decimal) year / 100);
b = Math.Truncate(a / 4);
c = 2 - a + b;
e = Math.Truncate((365.25m * (year + 4716)));
f = Math.Truncate((30.6001m * (month + 1)));
return (c + day + e + f - 1524.5m);
// return Math.Ceiling(c + day +