儒略历日期计算器-每次运行更改值



我得到了一个简单的儒略历日期计算器,代码如下:

DateTime date = DateTime.UtcNow;
int month = date.Month > 2 ? date.Month : date.Month + 12;
int year = month > 2 ? date.Year : date.Year - 1;
int hour = date.Hour;
int minute = date.Minute;
int second = date.Second;
int millisecond = date.Millisecond;
double day = date.Day + hour / 24.0 + minute / 1440.0 + (second + millisecond * 1000) / 86400.0;
int isJulianCalendar = isJulianDate(year, month, date.Day) ? 0 : 2 - year + year / 100 / 4;

当我运行程序时,它返回一个比前一个更低的值(例如,如果我现在运行,它显示一个值,但如果我在几分钟内运行,它显示另一个值)。

我从。pdf中复制了表达式,它说公式使用UT时间。与UTC时间有什么相关的差异吗?

。. NET有一个内置的JulianCalendar类,你可能应该使用它,而不是自己编写代码。

<>之前双日=日期。日+小时/24.0 +分钟/1440.0 +(秒+毫秒* 1000)/86400.0;之前

(second + millisecond * 1000)部分似乎打算计算小数秒,但要得到它,您需要 millisecond除以1000.0,而不是乘以它。

请注意,正如我在评论中指出的那样,这只解决了您所询问的直接问题,实际上正确计算儒略历日可能还不够。但是,由于您自己已经发布了工作答案的链接,显示没有时间的儒略历日的计算,您应该能够从这里开始工作。

最新更新