【发布时间】:2015-08-02 16:52:48
【问题描述】:
我有一个简单的儒略日期计算器,代码如下:
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 时间有任何相关差异吗?
【问题讨论】:
-
这个计算在我看来从根本上是有缺陷的,做不必要的工作,而不做必要的工作。你在哪里找到的?
-
嗯,我从这个问题中得到了一些部分:stackoverflow.com/questions/5248827/… 和这个.pdf 中的一些其他部分:nrel.gov/docs/fy08osti/34302.pdf(第 9 页)......这对我来说似乎很好,但我不知道'没有这方面的知识
-
我无法看到您如何从这些链接中的任何一个链接到您在问题中输入的代码。无论如何,当您在一天中的不同时间运行时,任何涉及小时、分钟、秒和毫秒的计算很可能会给出不同的值。抱歉,我很难理解你的问题。
-
对不起,我会尝试更好地解释:在 .pdf 中,计算它说
is the day of the month with decimal time的日期因为我对此感到困惑,所以我从另一个问题中复制了这段代码。这就是为什么我从两个链接中获得了一部分。 -
但是如果你包括时间,那么当你在不同的时间运行它时,你怎么能不得到不同的值呢?在我看来,你得到不同的值是很正常的。