我有问题需要找到18位当前julian-timestamp和恒定分钟数之间的差异,结果应该是18位julian时间戳。
现在我有lib提供api来获取18位数的当前julian-timestamp,但我找不到一种简单的方法来计算其余的。
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
请建议一种简化的计算方法。
答案 0 :(得分:2)
常见的用法是将Julian日期存储为double。根据{{3}},2000年1月1日的Julian日12:00 12:00是2,451,545。所以我们需要大约7个十进制数字来处理这一天。由于double的精度约为13位十进制数,因此我们仍然只剩下6位十进制数字。由于一天包含86400秒,浮动中包含的朱利安日可以代表自公元前4713年1月1日正午以来的所有日期,在精确的至少一秒钟的精确Julian日历中。
由于朱利安时期(同一参考)是从公元前4713年开始的7980年的时间间隔,从现在开始它仍然可以代表大约2000年。
因此,您应该将时间戳转换为double,将其添加(double) M / 1440.
,然后获得新的Julian时间戳。
如果您以后想要在我们的公历中转换朱利安日,您只需使用与2000年1月1日的差异12:00 UT即2,451,545
答案 1 :(得分:0)
我认为纸飞机的问题,再加上纸飞机在7月22日15:55Z的评论是正确的。我支持Serge Ballesta关于Julian日期定义的评论。
J = Julian日期,例如,它目前是2457226.38645800000。双浮点数或长整数都不能容纳那么多数字,所以我想这必须是一个字符串。
M =整数,表示要添加到J的分钟数。
您的首要任务是弄清楚结果的准确程度,以及您必须涵盖的日期范围。如果你不需要精度优于几微秒,你可以将J分成两个整数,整数部分和分数部分。然后通过将M除以1440将分钟数转换为天数。然后将结果添加到J的小数部分。接下来,处理小数部分和整数部分之间可能发生的任何进位。然后为一个字符串分配整数部分,小数点,小数部分和右边的数字,用足够的数字组成18位数字。