Преобразование даты в ее юлианское число

Я хочу вычислить разницу между двумя датами, временем и секундами, и я знаю, по крайней мере, для дат, конвертирующих их в два юлианских числа и вычитающих их, это эффективный способ. Я пытаюсь реализовать этот алгоритм для этого. Ниже моя реализация на сегодня, то есть 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**

Однако из этого онлайн-инструмента расчета правильное значение: 2457378.877,

Что я делаю неправильно?

1 ответ

Решение

Ваша основная проблема заключается в том, что используемый вами алгоритм имеет значение 1 в начале 1AD. Юлианские даты начинаются в 4713 г. до н.э.

Для ваших целей это может не иметь значения (но это затрудняет проверку в Интернете). Excel хорошо умеет сравнивать временные точки после начала 20-го века. Если вы действительно хотите конвертировать в юлианскую дату, вам нужно будет найти алгоритм. Например: https://gist.github.com/jiffyclub/1294443 - подходящий код на python - вам нужно будет конвертировать на ваш язык по вашему выбору

Другие вопросы по тегам