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

**URL:** https://discourse.julialang.org/t/ann-astrotime-jl-astronomical-time-keeping-in-julia/20496
**Category:** Astro/Space
**Created:** [February 6, 2019, 6:59am UTC](https://discourse.julialang.org/t/ann-astrotime-jl-astronomical-time-keeping-in-julia/20496 "2019-02-06T06:59:16Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![helgee](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/helgee/32/2022_2.png) [@helgee](https://discourse.julialang.org/u/helgee)
#### Post date: [February 6, 2019, 6:59am UTC](https://discourse.julialang.org/t/ann-astrotime-jl-astronomical-time-keeping-in-julia/20496/1 "2019-02-06T06:59:16Z")

</div>

Hi folks!

I have finally published the first version of [AstroTime.jl](https://github.com/JuliaAstro/AstroTime.jl) 🎉

This one has been an almost astronomically long time in the making (sorry, could not resist 😄). [The first commit](https://github.com/JuliaAstrodynamics/Astrodynamics.jl/commit/9b9ba77d9900e85ccd74d921324f9ef5470f24e3) (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:

```julia
# 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](https://juliaastro.github.io/AstroTime.jl/stable/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](https://github.com/FugroRoames/Chrono.jl), and the [Orekit](https://www.orekit.org/) maintainers for some of the battle-tested algorithms.

---

<div class="post-metadata">

### Author: ![c42f](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/c42f/32/52842_2.png) [@c42f](https://discourse.julialang.org/u/c42f)
#### Post date: [February 7, 2019, 12:24am UTC](https://discourse.julialang.org/t/ann-astrotime-jl-astronomical-time-keeping-in-julia/20496/2 "2019-02-07T00:24:55Z")

</div>

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 🙂

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.
