15.1. Есть ли формула для вычисления юлианской даты?

15.1. Есть ли формула для вычисления юлианской даты?

Попробуйте эту (все деления целочисленные, остатки отбрасываются, год — Year, месяц — Month, день — Day):

a = 14–Monh/12 y = Year + 4800 – a m = Month + 12a – 3

Для даты григорианского календаря:

JD = Day + 153m + 2/5 + 365y + y/4 – y/100 + y/400 – 32045

Для даты юлианского календаря:

JD = Day + 153m + 2/5 + 365y + y/4 – 32083

JD — это номер юлианского дня, который начинается в полдень числа, для которого производятся вычисления.

Алгоритм хорошо работает для дат в нашей эре. Если вы хотите использовать его для дат до нашей эры, необходимо перевести год до н.э. в отрицательный год (например, 10 г. до н.э. = -9). Алгоритм правильно работает для всех дат после 4800 г. до н.э., то есть по крайней мере для всех положительных юлианских дат.

Для обратного перевода (т.е. чтобы перевести юлианскую дату в день, месяц и год) можно использовать эти формулы (здесь также все деления целочисленные, год — Year, месяц — Month, день — Day):

Для григорианского календаря:

a = JD + 32044 b = 4a+3/146097 c = a – 146097b/4

Для юлианского календаря:

b=0 c=JD + 32082

Затем для любого календаря:

d = 4c+3/1461 e = c – 1461d/4 m = 5e+2/153 Day = e – 153m+2/5 + 1 Month = m + 3 – 12 x m/10 Year = 100b + d – 4800 + m/10