Julian Date (JD) conversion functions for astronomical time calculations.
The Julian Date is a continuous count of days since noon Universal Time on January 1, 4713 BC (proleptic Julian calendar). It is widely used in astronomy because it avoids the complexities of calendars and provides a simple linear time scale.
When to Use
- Converting between calendar dates and astronomical time scales
- Calculating time intervals between astronomical events
- Interfacing with astronomical algorithms and ephemeris data
Precision
from_datetime/1 is microsecond-precise, which is sufficient for the
ephemeris and time-scale conversions in this library.
Examples
# J2000.0 epoch
JulianDay.from_datetime(~U[2000-01-01 12:00:00.000000Z])
#=> 2451545.0
Summary
Functions
Convert a DateTime to Julian Date (JD).
Modified Julian Day (MJD) counts days since midnight on November 17, 1858
Functions
@spec from_datetime(DateTime.t()) :: float()
Convert a DateTime to Julian Date (JD).
Returns the number of days (including fractional days) since noon on January 1, 4713 BC. This implementation is microsecond-precise and uses a simplified algorithm suitable for most astronomical calculations.
Examples
iex> dt = ~U[2000-01-01 12:00:00.000000Z]
iex> JulianDay.from_datetime(dt)
2451545.0
iex> dt = ~U[2024-06-15 18:30:00.000000Z]
iex> JulianDay.from_datetime(dt)
2460478.270833333
Modified Julian Day (MJD) counts days since midnight on November 17, 1858
accomplishes two things:
- Moves the epoch from noon to midnight.
- Puts modern dates in the ~50 000 range instead of 2.4 million.