Как вычислить юлианскую арифметику

У меня есть проблема, когда мне нужно найти разницу между 18-значной текущей юлианской временной меткой и постоянным количеством минут, и в результате снова должна появиться 18-значная юлианская временная метка.

Теперь у меня есть 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

Пожалуйста, предложите упрощенный способ вычисления R.

1

Решение

Обычно используется для хранения дат Юлиана в двойном. В соответствии с Юлианский день в Википедии, Юлианский день на 1 января 2000 года 12:00 UT составляет 2 451 545. Таким образом, нам нужно около 7 десятичных цифр для обработки дня. Так как двойная точность имеет точность около 13 десятичных цифр, у нас все еще остается 6 десятичных цифр для доли дня. Поскольку день содержит 86400 секунд, юлианский день, содержащийся в числе с плавающей точкой, может представлять все даты, начиная с полудня 1 января 4713 г. до н.э., в пролетическом юлианском календаре с точностью не менее одной секунды.

А поскольку юлианский период (та же ссылка) * является хронологическим интервалом в 7980 лет, начиная с 4713 года до нашей эры, он все еще может представлять около 2000 лет, начиная с сегодняшнего дня.

Так что вы должны просто конвертировать вашу временную метку в двойную, добавить ее (double) M / 1440. и вы получите новую метку времени Джулиана.

Если позже вы захотите перевести юлианский день в наш григорианский календарь, вам просто нужно использовать разницу с 1 января 2000 года в 12:00 UT, которая составляет 2 451 545

2

Другие решения

Я полагаю, что вопрос бумажной плоскости в сочетании с комментарием бумажной плоскости 22 июля, 15: 55Z, является правильным. Я поддерживаю комментарий Сержа Баллесты об определении юлианской даты.

J = юлианская дата, например, в настоящее время она составляет 2457226,38645800000. Ни двойное число с плавающей запятой, ни длинное целое число не могут содержать столько цифр, поэтому я предполагаю, что это должна быть строка символов.

M = целое число, указывающее количество минут, которые нужно добавить к J.

Ваша первая задача — выяснить, насколько точным должен быть ваш результат и какой диапазон дат вы должны охватить. Если вам не требуется точность лучше, чем несколько микросекунд, вы можете разделить J на ​​два целых числа, целую часть числа и дробную часть. Затем преобразуйте число минут в дни, разделив M на 1440. Затем добавьте результат к дробной части J. Затем обработайте любой перенос, который может произойти между дробной частью и целой числовой частью. Затем присвойте строке целую числовую часть, десятичную точку, дробную часть и правую часть с достаточным количеством цифр, чтобы всего было 18 цифр.

0

По вопросам рекламы [email protected]