Julian Date Converter
Конвертируйте между датами григорианского календаря и юлианскими порядковыми номерами дней.
О юлианском дне
Юлианский день (JDN) — это непрерывный отсчёт дней со дня 1 января 4713 года до нашей эры. Он устраняет путаницу различных календарных систем и широко используется в астрономии для точных расчётов даты и времени.
Об этом инструменте
Юлианское число дня (JDN) — это непрерывный отсчёт дней, начиная с 1 января 4713 года до н. э., широко используемый в астрономии, спутниковых расчётах и исторической датировке. В отличие от привычного григорианского календаря, который повторяется по месяцам и годам, JDN предоставляет единственный, однозначный номер для любой заданной даты—делая его незаменимым для точных астрономических наблюдений и расчётов, охватывающих столетия без путаницы из-за календарных реформ или региональных датировочных соглашений.
Чтобы использовать этот конвертер, просто введите дату по григорианскому календарю (месяц, день и год), чтобы получить соответствующее юлианское число дня, или введите JDN, чтобы преобразовать его обратно в стандартную календарную дату. Инструмент мгновенно вычисляет преобразование, используя установленную астрономическую формулу, полезен для любого, кто работает с историческими записями, астрономическими данными или программным обеспечением, требующим универсальной системы ссылок на даты.
Часто задаваемые вопросы
Реализация кода
def gregorian_to_jdn(year: int, month: int, day: int) -> float:
"""Convert Gregorian date to Julian Day Number (Meeus algorithm)."""
if month <= 2:
year -= 1
month += 12
A = year // 100
B = 2 - A + A // 4
return int(365.25 * (year + 4716)) + int(30.6001 * (month + 1)) + day + B - 1524.5
def jdn_to_gregorian(jdn: float) -> tuple[int, int, int]:
"""Convert Julian Day Number to Gregorian date (Meeus algorithm)."""
jdn = jdn + 0.5
Z = int(jdn)
if Z < 2299161:
A = Z
else:
alpha = int((Z - 1867216.25) / 36524.25)
A = Z + 1 + alpha - alpha // 4
B = A + 1524
C = int((B - 122.1) / 365.25)
D = int(365.25 * C)
E = int((B - D) / 30.6001)
day = B - D - int(30.6001 * E)
month = E - 1 if E < 14 else E - 13
year = C - 4716 if month > 2 else C - 4715
return year, month, day
jdn = gregorian_to_jdn(2024, 3, 15)
print(f"2024-03-15 → JDN: {jdn}")
y, m, d = jdn_to_gregorian(jdn)
print(f"JDN {jdn} → {y}-{m:02d}-{d:02d}")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.