【问题标题】:Converting a date to its Julian number [duplicate]将日期转换为其儒略数 [重复]
【发布时间】:2015-12-22 09:10:57
【问题描述】:

我想计算两个日期、时间和秒之间的差异,我知道至少将日期转换为两个儒略数并减去它是一种有效的方法。 我正在尝试为此实现this 算法。 以下是我今天的实现,即 12-22-2015

function g(y,m,d)
m = (m + 9) % 12
y = y - m/10
return 365*y + y/4 - y/100 + y/400 + (m*306 + 5)/10 + ( d - 1 )

function g(2015,12,22)
[9] m = (12 + 9) % 12
[2014.1] y = 2015 - 9/10

735146.5 + 503.525 + 20.141 + 5.03525 + 275.9 + 21
=**735954.10125**

但是从this在线计算工具中正确的值是:2457378.877

我做错了什么?

【问题讨论】:

  • 这段代码看起来不像 C++。你用javascript实现了吗?请注意,您的链接显示“所有除法都是整数除法”,因此 y = 2015 - 9/10 应该是 2015,而不是 2014.1。
  • 我没有复制代码,只是复制了计算步骤。如果我们将 2014.1 四舍五入,为什么 2015 年应该是 2014 年?
  • 没有。计算需要进行 2015 - 9/10 => 2015 - 0 => 2015。除法 9/10 向零舍入。

标签: c++ date julian-date


【解决方案1】:

您的基本问题是您使用的算法在 1AD 开始时的值为 1。儒略历始于公元前 4713 年。

出于您的目的,这可能并不重要,(但它使在线检查变得更加困难)。 Excel 擅长比较 20 世纪初之后的时间点。如果您确实想转换为儒略日期,则需要搜索算法。例如:https://gist.github.com/jiffyclub/1294443 是 python 中的合适代码 - 您需要转换为您选择的语言

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 2013-07-21
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多