[ANN] AstroTime.jl: Astronomical time keeping in Julia

Hi folks!

I have finally published the first version of AstroTime.jl :tada:

This one has been an almost astronomically long time in the making (sorry, could not resist :smile:). The first commit (when the code was still part of Astrodynamics.jl) dates back to March 2013. A solid six years and three major rewrites later, I am finally happy with the result!

The package provides a new time-scale aware, high-precision Epoch type and here is how it works:

# Create an Epoch based on the TT (Terrestial Time) scale
tt = TTEpoch("2018-01-01T12:00:00")

# Transform to UTC (Universal Time Coordinated)
utc = UTCEpoch(tt)

# Transform to TDB (Barycentric Dynamical Time)
utc = TDBEpoch(utc)

# Shift an Epoch by one day
another_day = tt + 1days

If you are interested, jump into the tutorial where I will walk you through all functionality and please take it for a spin.

Acknowledgements

Thanks to @giordano and @prakharcode for contributing to the package, @andyferris and @c42f for the design inspiration from Chrono.jl, and the Orekit maintainers for some of the battle-tested algorithms.

19 Likes

Very nice! Having dabbled a bit in this area I know that it’s surprisingly hard to make a clear language for precisely talking about measurement in time and space :slight_smile:

I like how you’ve dealt with the conversions to the problematic cases UT1/UTC with sensible defaults but allowing the use of a different data source for the conversion if required. It’s great that you can choose TAI as a central standard for time conversions. Having no accurate conversions to a central standard was always what made me confused when trying to make the conversion system in Geodesy.jl sensible and efficient.

1 Like