У меня есть проблема, когда мне нужно найти разницу между 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 января 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
Я полагаю, что вопрос бумажной плоскости в сочетании с комментарием бумажной плоскости 22 июля, 15: 55Z, является правильным. Я поддерживаю комментарий Сержа Баллесты об определении юлианской даты.
J = юлианская дата, например, в настоящее время она составляет 2457226,38645800000. Ни двойное число с плавающей запятой, ни длинное целое число не могут содержать столько цифр, поэтому я предполагаю, что это должна быть строка символов.
M = целое число, указывающее количество минут, которые нужно добавить к J.
Ваша первая задача — выяснить, насколько точным должен быть ваш результат и какой диапазон дат вы должны охватить. Если вам не требуется точность лучше, чем несколько микросекунд, вы можете разделить J на два целых числа, целую часть числа и дробную часть. Затем преобразуйте число минут в дни, разделив M на 1440. Затем добавьте результат к дробной части J. Затем обработайте любой перенос, который может произойти между дробной частью и целой числовой частью. Затем присвойте строке целую числовую часть, десятичную точку, дробную часть и правую часть с достаточным количеством цифр, чтобы всего было 18 цифр.