如何计算朱利安算术

How to compute julian arithmetic

本文关键字:朱利安 计算 何计算      更新时间:2023-10-16

我有问题,我需要找到一个18位的当前朱利安时间戳和一个恒定的分钟量之间的差异,结果应该是一个18位的朱利安时间戳。

现在我有了库提供的api来获得18位的当前朱利安时间戳,但我无法找到一种简单的方法来计算其余部分。

J = 18-digit current julian-timestamp; /* this I have */
M = an integer, which indicates the number of minutes elapsed.
J-M = R is a 18-digit julian-timestamp

请给出一个计算r的简化方法

通常的用法是将儒略历日期存储在双精度类型中。根据维基百科上的儒略历,2000年1月1日12:00 utc的儒略历是2451545。所以我们需要大约7个十进制数字来处理一天。因为双精度数的精度大约是13位小数,所以我们还剩下6位小数来表示一天的小数。由于一天包含86400秒,因此浮点数中的儒略历日可以代表公元前4713年1月1日中午以来的所有日期,在预言儒略历中精度至少为1秒。

由于儒略历(同一参考文献)是从公元前4713年开始的7980年的时间间隔,它仍然可以代表从现在开始的大约2000年。

所以你应该把你的时间戳转换成双精度,加上(double) M / 1440.,你就得到了新的朱利安时间戳。

如果您以后想在我们的公历中转换朱利安日,您只需使用与2000年1月1日12:00 UT的差值,即2,451,545

我认为纸飞机的问题,结合纸飞机在7月22日15:55Z的评论是正确的。我赞同Serge Ballesta关于儒略历定义的评论。

J =儒略历,例如,当前为2457226.38645800000。无论是双浮点数还是长整数都不能容纳这么多的数字,所以我想这一定是一个字符串。

M =整数,表示要加到j上的分钟数。

你的第一个任务是弄清楚你的结果必须有多精确,以及你必须涵盖的日期范围。如果你不要求精度超过几微秒,你可以把J分成两个整数,整数部分和分数部分。然后用M除以1440将分钟数转换成天数。然后将结果添加到j的分数部分。接下来,处理分数部分和整数部分之间可能发生的进位。然后将整数部分、小数点部分、分数部分和右pad赋值给一个字符串,这些部分的数字之和为18位。